ahmad.mo74
پنج شنبه 06 شهریور 1393, 19:12 عصر
سلام، فرض کنید ما یه کلاس داریم به اسم User که دارای فیلد های id, username, email,... و یک مجموعه ای از دوستان یعنی مثلا Collection<User> friends که تو هایبرنت باید ManyToMany باشه و بقیه داستان ها...
حالا ما این آبجکت رو از دیتابیس گرفتیم و میخوایم به json تبدیل کنیم...اما یک مشکلی هست که فکر میکنم اکثرا قبلا باهاش برخورد داشتید یعنی وقتی این آبجکت میخواد به json تبدیل بشه تو لوپ بینهایت گیر میکنه چون هر User یه مجموعه ای از User ها داره و دوباره هر کدوم اون مجموعه رو دادن و الی آخر...و راههای مختلفی هم برای هندل کردنش وجود داره مثل استفاده از @JsonIgnore که به درد ما نمیخوره چون ما اون مجموعه رو میخوایم...
یه راه دیگه اینه که برای هر یوزر یک id به خصوصی تعریف کنیم که json تشخیص بده آبجکت ها رو و هرکدوم رو دوباره ذخیره نکنه مثلا: (این راه جواب میده و مشکلی نیست اما من دنبال راه بهتری هستم)
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@UUID")
public class User{
...
}
اما این روش هم خیلی مطلوب نیست چون یک فیلد اضافه میشه به هر آبجکت ولی ما میخوایم هر آبجکت همونتوری که هست به json تبدیل بشه...
یه روش دیگه هم اینه که از این (https://github.com/FasterXML/jackson-datatype-hibernate) استفاده کنیم ولی باز هم کار نمیکنه و تو لوپ میفته...
خب، دوستان نظر شما چیه؟ اگر تجربه همچین مشکلی رو دارید و تونستید برطرف کنید لطفا راهنمایی کنید.
حالا ما این آبجکت رو از دیتابیس گرفتیم و میخوایم به json تبدیل کنیم...اما یک مشکلی هست که فکر میکنم اکثرا قبلا باهاش برخورد داشتید یعنی وقتی این آبجکت میخواد به json تبدیل بشه تو لوپ بینهایت گیر میکنه چون هر User یه مجموعه ای از User ها داره و دوباره هر کدوم اون مجموعه رو دادن و الی آخر...و راههای مختلفی هم برای هندل کردنش وجود داره مثل استفاده از @JsonIgnore که به درد ما نمیخوره چون ما اون مجموعه رو میخوایم...
یه راه دیگه اینه که برای هر یوزر یک id به خصوصی تعریف کنیم که json تشخیص بده آبجکت ها رو و هرکدوم رو دوباره ذخیره نکنه مثلا: (این راه جواب میده و مشکلی نیست اما من دنبال راه بهتری هستم)
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@UUID")
public class User{
...
}
اما این روش هم خیلی مطلوب نیست چون یک فیلد اضافه میشه به هر آبجکت ولی ما میخوایم هر آبجکت همونتوری که هست به json تبدیل بشه...
یه روش دیگه هم اینه که از این (https://github.com/FasterXML/jackson-datatype-hibernate) استفاده کنیم ولی باز هم کار نمیکنه و تو لوپ میفته...
خب، دوستان نظر شما چیه؟ اگر تجربه همچین مشکلی رو دارید و تونستید برطرف کنید لطفا راهنمایی کنید.