मेरे पास निम्न इकाई संरचना है: व्यवसाय -> अभियान -> प्रचार, जहां एक व्यवसाय में कई अभियान हो सकते हैं और एक अभियान में कई प्रचार हो सकते हैं। एक से कई संबंधों को लाज़ी के रूप में घोषित किया जाता है। मेरे कोड में एक ही स्थान पर, मैं बेसब्री से एक व्यापार से दोनों संग्रह लाने के लिए की जरूरत है, तो मैं कार्य करें:जेपीए: कृपया "fetch में शामिल होने" को समझने में सहायता करें
Query query = entityManager.createQuery("select b from Business b " +
"left join fetch b.campaigns c " +
"left join fetch c.promotions where b.id=:id");
query.setParameter("id", b.getId());
business = (Business) query.getResultList().get(0);
हालांकि, क्वेरी एक परिणाम सूची है कि यह में 4 बिजनेस वस्तुएं शामिल हैं, सभी 4 वस्तुओं की बात कर रहे रिटर्न वही व्यवसाय उदाहरण। मेरे डेटाबेस में, इस व्यवसाय के तहत 3 अभियान हैं, और सभी 3 अभियानों में उनके तहत 3 प्रचार हैं।
मैं दो प्रश्न हैं:
सबसे पहले, मैं का उपयोग सूची संबंधों के कई पक्षों को समाहित करने के लिए, लेकिन जब कार्यक्रम चलाता है, मैं "org.hibernate.HibernateException: एक साथ कई बैग को नहीं लाया जा सकता है "अपवाद। तब मैंने इस अपवाद को गुमराह किया और ऐसा लगता है कि मुझे सूची के बजाय सेट का उपयोग करना है। तो मैंने संग्रह को सेट करने के लिए बदल दिया और यह काम किया। क्या कोई मुझे बता सकता है कि इस स्थिति में सूची क्यों काम नहीं करेगी?
मैं क्वेरी को एक परिणाम वापस करने की उम्मीद कर रहा हूं, क्योंकि यह आईडी के खिलाफ पूछताछ कर रहा है, जो प्राथमिक कुंजी है और इस प्रकार केवल एक ही परिणाम लौटा देना चाहिए। लेकिन यह पता चला है कि यह एक सूची में 4 उदाहरण देता है। क्या ये एक दिक्कत है? या यह अपेक्षित व्यवहार है?
किसी भी मदद की सराहना की जाएगी।
क्वेरी में "विशिष्ट" जोड़कर चाल चल रही है। धन्यवाद। –