hibernate - Grails GORM JOIN in query -
मेरे पास एक इकाई है जो कि अधिसूचना और
उपयोगकर्ता :
वर्ग अधिसूचनाएरिजिएपमेंट लागू करना सीरियलजैबल {सूचना अधिसूचना उपयोगकर्ता प्राप्तकर्ता प्रयोक्ता स्थिर मानचित्रण = {टेबल 'अधिसूचना_प्रतिष्ठित' संस्करण झूठी अधिसूचना कैस्केड: 'सभी' प्राप्तकर्ता उपयोगकर्ता कास्केड: 'सभी' आईडी जनरेटर: 'असाइन', संमिश्र : ['अधिसूचना', 'प्राप्तकर्ताउज़र']}} मैं क्वेरी को बनाना चाहता हूं जो विशिष्ट उपयोगकर्ता को निर्दिष्ट सभी नोटिफिकेशन प्राप्त करता है, लेकिन मुझे सूचना फ़ील्ड चाहिए उत्सुक उत्प्रेरित से पूछताछ अनुभाग में उल्लेखित के रूप में एन + 1 से बचने के लिए पॉपुलेटेड होने के लिए परिणाम पर पुनरावृत्त किया जा रहा है (डिफ़ॉल्ट जानकारी के लिए प्रत्येक क्वेरी के लिए एक क्वेरी और एक आधिकारिक फ़ील्ड के अनुसार प्रत्येक चयन का चयन करें)।
मैं मानचित्रण को बदलना नहीं चाहता और अधिसूचना से आलसी: गलत को सेट करें, लेकिन इसे क्वेरी में निर्दिष्ट करें ()।
मेरी क्वेरी (जैसा है सीएस कहते हैं):
def resut = NotificationRecipient.createCriteria ()। सूची (विकल्प? .पेराम?: [:]) {Eq ("recipientUser.id", userId) 'सूचना' } परन्तु अभी भी एन + 1 क्वेरी उत्पन्न होती हैं।
मैंने भी लाए जाने की विधि सेट करने का प्रयास किया है:
नोटिफिकेशन रीसिपेंट.सुरक्षितता () .list (विकल्प? .पेराम?: [:]) {Eq ("recipientUser.id", userId) fetchMode "सूचना", FetchMode.JOIN} सफलता के बिना। / P>
क्या आप मुझे Grails के इस व्यवहार की व्याख्या कर सकते हैं?
दुर्भाग्य से यह हाइबरनेट या Grails बग:
समाधान मिश्रित प्राथमिक कुंजी आईडी जनरेटर हटाया जाता है: 'असाइन', समग्र: ['अधिसूचना', 'प्राप्तकर्ता उपयोगकर्ता'] ।
कंपोन प्राथमिक कुंजी मिलती है के लिए काम नहीं करता है। साथ ही ठीक से काम नहीं कर रहा है।
Comments
Post a Comment