2012-06-12 6 views
5

जेपीए एंटीटी मैनेजर और जेपीए क्वेरी ऑब्जेक्ट का उपयोग करके, मैं किसी क्वेरी में आलसी @OneToMany (fetch = FetchType.EAGER) को लापरवाही से प्राप्त करने के लिए कुछ कैसे ओवरराइड कर सकता हूं?FetchType.EAGER को रनटाइम पर आलसी होने के लिए ओवरराइड कैसे करें

यदि मेरे पास हाइबरनेट क्वेरी ऑब्जेक्ट था, तो मैं इसे एक मानदंड वस्तु बना सकता था और इसका उपयोग करके, fetch प्रकार को आलसी होना सेट कर सकता था। लेकिन मुझे जेपीए क्वेरी ऑब्जेक्ट का उपयोग करना है। क्या इस समस्या के लिए कोई समाधान है?

+0

हां, आप कर सकते हैं - http://stackoverflow.com/questions/4388486/fetchmode-in-jpa-2-criteriaquery –

+0

इसे देखें: http: //stackoverflow.com/questions/17847289/ignore-a-fetchtype-eager-in-a-relationship। – Dherik

उत्तर

4

ऐसा करने का कोई तरीका नहीं है, यहां तक ​​कि देशी हाइबरनेट एपीआई के साथ भी। यदि किसी एसोसिएशन को ईएजीईआर के रूप में परिभाषित किया जाता है, तो यह हमेशा उत्सुकता से लोड हो जाएगा, और क्वेरी का उपयोग करके इसे बदलने का कोई तरीका नहीं है।

रिवर्स सत्य नहीं है: आप एक क्वेरी का उपयोग करके आलसी रूप से आलसी सहयोग लोड कर सकते हैं।

+0

डॉन। धन्यवाद, हाँ, मैं ऐसा करने के लिए एचक्यूएल में fetch-keyword का उपयोग कर रहा हूं। – hugelgupf

-1

हाइबरनेट फ़ेच प्रोफाइल, या जेपीए इकाई ग्राफ में देखें। 2012 में प्रश्न पूछने के बाद से यह समस्या हल हो गई है।

+0

इसे हल नहीं किया गया है: https://hibernate.atlassian.net/browse/HHH-8776 - एंटिटीग्राफ का उपयोग करके भी EAGER लोड को अनदेखा करना संभव नहीं है। –

+0

आह मेरी माफ़ी, मेरे जवाब की उपेक्षा करते हैं। ठेठ उपयोग केस रिवर्स - आपकी संस्थाओं को आलसी रूप से लाया गया है, और रन टाइम पर उत्सुक होने के लिए fetch प्रकार को बदलने के लिए इकाई ग्राफ़ का उपयोग करें। मुझे एचएचएच -8776 के बारे में पता नहीं था, धन्यवाद, धन्यवाद। – mancini0

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