मैं तालिका से लगभग 100 मिलियन पंक्तियों को पुनर्प्राप्त करने के लिए हाइबरनेट का उपयोग करने की कोशिश कर रहा हूं। मेरे पास एक स्थिर इकाई वस्तु है जिसमें फीस का संग्रह शामिल है (एक और स्थिर इकाई)। यह देखते हुए कि मैं परिणाम पर पुन: प्रयास करता हूं और प्रत्येक ऑब्जेक्ट के लिए शुल्क तक पहुंचता हूं, मैं उत्सुकता से एन + 1 समस्या से बचने के लिए शुल्क लेना चाहता हूं।स्क्रॉल करने योग्य रीसेट्स के साथ हाइबरनेट में उत्सुक संग्रह संग्रह
मुझे यह भी उल्लेख करना चाहिए कि मैं इसे प्रदाता (एक-से-एक मैपिंग लेकिन कोई विदेशी कुंजी) नामक किसी अन्य तालिका में शामिल नहीं करना चाहता हूं। मैंने कोशिश की:
String query = "select new " + Order.class.getName()
+ "(i, p) from Item i left join fetch i.fees f, Provider p where "
+ "p.factoryId=i.factoryId and p.factoryRef=i.factoryRef";
return session.createQuery(query).scroll();
मेरे आदेश वर्ग एक प्रदाता क्षेत्र और एक आइटम फ़ील्ड है।
Caused by: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list
मैं आदेश जो मद और प्रदाता (फीस बेसब्री से प्राप्त किए गए) के साथ शामिल की एक स्क्रॉल सूची के साथ अंत करना चाहते हैं: मैं इस त्रुटि मिलती है।
मुझे लगता है कि यह उत्तर सही है। यदि ऐसा है, तो आपको हाइबरनेट को यह जानने में सक्षम होना चाहिए कि आप 'ऑर्डर' बनाने के बजाए 'सूची' वापस करने के लिए क्वेरी को बदलकर 'आइटम' को वापस ला रहे हैं: 'i, p से चुनें ...'। इसके बाद आपको 'ऑर्डर मैन्युअल रूप से बनाना होगा। –