নিম্নলিখিত ডোমেন মডেলটি দেওয়া, আমি Answer
তাদের Value
ও তাদের নিজ নিজ সাব-শিশু সহ সমস্তগুলি লোড করতে এবং এটিতে AnswerDTO
JSON এ রূপান্তর করতে চাই। আমার একটি কার্যকরী সমাধান রয়েছে তবে এটি এন + 1 সমস্যায় ভুগছে যা আমি একটি অ্যাড-হক ব্যবহার করে পরিত্রাণ পেতে চাই @EntityGraph
। সমস্ত সমিতি কনফিগার করা আছে LAZY
।
@Query("SELECT a FROM Answer a")
@EntityGraph(attributePaths = {"value"})
public List<Answer> findAll();
একটি বিজ্ঞাপন-হক ব্যবহার @EntityGraph
উপর Repository
আমি করতে পদ্ধতি নিশ্চিত করুন যে মূল্যবোধের ওপর n + 1 প্রতিরোধ প্রাক নিয়ে আসা হয় Answer->Value
সমিতি। যদিও আমার ফল জরিমানা সেখানে অলস লোড কারণ অন্য n + 1 সমস্যা হচ্ছে, selected
সমিতি MCValue
গুলি।
এটি ব্যবহার করে
@EntityGraph(attributePaths = {"value.selected"})
ব্যর্থ হয়, কারণ selected
ক্ষেত্রটি অবশ্যই কিছু Value
সংস্থার অংশ মাত্র :
Unable to locate Attribute with the the given name [selected] on this ManagedType [x.model.Value];
selected
মানটি হ'ল আমি কীভাবে জেপিএকে সমিতিটি আনার চেষ্টা করতে পারি MCValue
? আমি কিছু প্রয়োজন optionalAttributePaths
।
selected
উত্তর আছে এমন উত্তরগুলির জন্য 2 তম উত্তরMCValue
। আমি অপছন্দ করি যে এটির জন্য অতিরিক্ত লুপের প্রয়োজন হবে এবং ডেটা সেটগুলির মধ্যে ম্যাপিংটি পরিচালনা করতে হবে। এর জন্য হাইবারনেট ক্যাশেটি কাজে লাগানো আপনার ধারণাটি আমি পছন্দ করি। ফলাফলটি রক্ষার জন্য ক্যাশে নির্ভর করা কতটা নিরাপদ (ধারাবাহিকতার দিক দিয়ে) আপনি বিশদ বর্ণনা করতে পারেন? প্রশ্নগুলি লেনদেনের সময় করা হলে এটি কি কাজ করে? আমি স্পট এবং অল্প অলস প্রারম্ভিক ত্রুটিগুলি থেকে কঠিন hard