2010-02-08 12 views
18

मैं एक डोमेन मॉडल के खिलाफ एक प्रश्न लिख रहा हूं जहां (किसी भी कारण से) एक से कई संगठन आलसी = "झूठी" के साथ मैप किए गए हैं। मेरी विशेष पूछताछ में, मैं उस संग्रह को आलसी रूप से लाऊंगा, क्योंकि मुझे इसकी सामग्री की परवाह नहीं है। मैं अपनी विशेष क्वेरी के लिए आलस्य कैसे सक्षम कर सकता हूं? क्या यह वास्तव में संभव है?हाइबरनेट: मानदंड API में आलसी लाने में सक्षम

अब तक, मैं Criteria.setFetchMode देखा, लेकिन FetchMode.LAZY केवल FetchMode.SELECT के लिए एक पदावनत उर्फ ​​...

मानचित्रण बदलने शायद आदर्श होगा है, लेकिन मैं नहीं बल्कि मौजूदा प्रश्नों को प्रभावित करने वाले जोखिम नहीं होता।

संपादित करें: हम हाइबरनेट 3.3.2

उत्तर

-6

मैं एक विशेषज्ञ अपने आप नहीं हूँ, लेकिन हाइबरनेट पुस्तक के माध्यम से ब्राउज़िंग और एक सहयोगी के साथ परामर्श मुझे किसी भी संकेत नहीं दिया है कि इस, संभव होगा विपरीत बल्कि का उपयोग ।

आपकी हाइबरनेट द्वारा कवर नहीं की गई असामान्य स्थिति प्रतीत होती है। सामान्य उपयोग केस विपरीत है: डिफ़ॉल्ट रूप से आलसी fetching का उपयोग करने के लिए, और चुनिंदा रूप से पूछताछ के लिए उत्सुक लाने में सक्षम बनाता है जहां यह उचित है।

+0

मैं या तो कुछ भी नहीं मिला। ऐसा लगता है कि हाइबरनेट के डिफ़ॉल्ट से विचलित नहीं होता है। मैंने प्रोजेक्ट करके समस्या के आसपास काम किया है। (मुझे पूरी संस्थाओं की आवश्यकता नहीं थी, हालांकि मैं एक नए डीटीओ को परिभाषित करने से बचा था)। – meriton

+3

मेरा जवाब देखें, setFetchMode काम किया। –

4

यदि कोई इस पर (मेरे जैसा) ठोकर खाता है, तो कृपया this देखें। ऐसा प्रतीत होता है कि यह एक हाइबरनेट दस्तावेज त्रुटि थी, और FetchMode.SELECT आलसी लोड का कारण बनता है।

25

स्वीकृत उत्तर गलत है। हाइबरनेट आपको मापदंड में डिफ़ॉल्ट रूप से उत्सुकता से कुछ मानदंडों में आलसी लाने की अनुमति देता है। बस

criteria.setFetchMode("propertyName", FetchMode.SELECT); 

मैंने यह कोशिश की है और यह काम किया है। FetchMode.LAZY स्रोत कोड में पदावनत चिह्नित है, और सभी यह होता है

हाइबरनेट कोड FetchMode.SELECT को इंगित है:

public static final FetchMode LAZY = SELECT; 
+1

यह मेरे लिए काम करता था - मैं setFirstResult और setMaxResults के साथ Criteria.DISTINCT_ROOT_ENTITY का उपयोग कर रहा था और बहुत कम परिणाम प्राप्त कर रहा था। – blank

+2

@ चे जवरा - बस कोशिश की और मेरे लिए काम नहीं कर रहा। मैं हाइबरनेट 3.6.10 का उपयोग कर रहा हूं। उपयोग के लिए कोड की खोज की और कोई भी संग्रह/एसोसिएशन की लोडिंग को छोड़कर हाइबरनेट के मामलों को नहीं देखा। कहां देखना है इस पर कोई सुझाव मिला? – mikemil

+0

हाइबरनेट 4.0.5 के साथ मेरे लिए काम नहीं किया – nxhoaf

संबंधित मुद्दे