मैं एक मानदंड है कि सभी डेटा आवेदन की आवश्यकता है देता है, मूल रूप से:हाइबरनेट मानदंड: अलग संस्थाओं और उसके बाद की सीमा
Criteria criteria = session.createCriteria(Client.class);
criteria.createAlias("address", "address");
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
criteria.setFirstResult(init);
criteria.setMaxResults(max);
List<Client> clients = criteria.list();
समस्या संबंध ग्राहक/पता द्विदिश है: ग्राहक एक पता होता है पर और एक पता एक से अधिक ग्राहक से संबंधित हो सकता है।
मैं अपने पीके पाठ्यक्रम के आधार पर "सिंगल" क्लाइंट ऑब्जेक्ट्स को पुनर्प्राप्त करना चाहता हूं, कुछ क्लाइंट्स जैसे कि वे किसी तालिका में प्रदर्शित होते हैं।
क्योंकि सेट फर्स्ट रीसेट/सेटमैक्स रीसेट्स पहले निष्पादित किए जाते हैं, मुझे पहले से लागू सीमाओं के भीतर डुप्लीकेट क्लाइंट मिल रहे हैं। उसके बाद (आवेदन के स्तर के रूप में आवेदन स्तर का उपयोग नहीं किया गया था) हाइबरनेट को डुप्लिकेट क्लाइंट की छाप मिलती है, इसलिए मैं कम क्लाइंट्स के साथ समाप्त होता हूं जो सेटमैक्स रेसल्ट्स में अधिकतम निर्दिष्ट होते हैं।
(प्रक्षेपण समूह) द्वारा समूहित नहीं किया जा सकता है क्योंकि यह ग्राहक/पते में आवश्यक सभी कॉलम वापस नहीं करेगा, केवल उस समूह का समूह समूह द्वारा समूहबद्ध किया जा रहा है।
(समेकित करने के लिए, मेरी तालिका में प्रति पृष्ठ 100 परिणाम हैं लेकिन डुप्लिकेट को छोड़ने के बाद मेरे पास 100 के बजाय 98 परिणाम हैं ...) ऐसा इसलिए है क्योंकि सीमा: LIMIT 0,100 लागू होती है जब इसे बाद में किया जाना चाहिए)
FetchMode.SELECT ने इसे मेरे लिए तय किया - अन्य मोड इस मामले में काम नहीं करते हैं। –
FetchMode.SELECT बहुत अच्छा है ... सिवाय इसके कि यह कुछ कारणों से, एक उत्सुक लाने के लिए मजबूर करता है। Https://docs.jboss.org/hibernate/core/3.3/api/org/hibernate/FetchMode.html देखें कि इकाई के पीके पर "विशिष्ट" करने के लिए बस हाइबरनेट को बताने का कोई तरीका नहीं है ?? यह सबसे स्पष्ट चीज की तरह दिखने के लिए सबसे छोटी चीज की तरह लगता है, और, सामान्य रूप से, हाइबरनेट जीवन को हमारे लिए बेहद जटिल बनाता है। – Marc
वैसे, एचक्यूएल के साथ ऐसा करना उतना ही छोटा है जितना लगता है। आप बस अपनी क्वेरी में "विशिष्ट" शब्द जोड़ते हैं। मानदंड एपीआई का उपयोग करके यह इतना दर्दनाक रूप से कठिन क्यों है मेरे बाहर है। क्या हम सभी अभी तक ओओ डेटाबेस का उपयोग करना शुरू कर सकते हैं? – Marc