मेरे पास एक हाइबरनेट मानदंड कॉल है जिसे मैं एक SQL कथन में निष्पादित करना चाहता हूं। जो मैं करने की कोशिश कर रहा हूं वह माता-पिता के चुनिंदा उदाहरण हैं जिनके पास संपत्तियों की एक श्रृंखला (एसक्यूएल इन क्लॉज) में संपत्ति है, जबकि बाहरी बहिष्कार का उपयोग करके बच्चों को लोड करते समय। यहाँ मैं अब तक है:बच्चों पर प्रतिबंधों के साथ हाइबरनेट मानदंड
Criteria c = session.createCriteria(Parent.class);
c.createAlias("children", "c", CriteriaSpecification.LEFT_JOIN)
.setFetchMode("c", FetchMode.JOIN)
.add(Restrictions.in("c.property", properties));
c.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
return c.list();
यहाँ कुछ नमूना डेटा है:
Parent
Parent ID
A
B
C
Children
Child ID Parent ID property
... A 0
... A 2
... A 7
... B 1
... C 1
... C 2
... C 3
मुझे क्या करना चाहते हैं माता पिता और उनके सभी बच्चों लौट अगर बच्चों में से एक एक संपत्ति के बराबर है है मेरी बाध्य पैरामीटर (ओं)। आइए मान लें कि गुण एक सरणी है जिसमें {2} है। इस मामले में, कॉल माता-पिता ए और सी वापस कर देगा लेकिन उनके बाल संग्रह में केवल तत्व 2 होगा। I.e. जनक [बच्चों]:
एक [2] & सी [2]
क्या मैं चाहता हूँ है:
एक [0, 2, 7] & सी [1, 2 3]
यदि यह एक बग नहीं है, तो यह एक टूटा अर्थपूर्ण प्रतीत होता है। मैं नहीं देखता कि एगेट चिल्ड्रेन() या सीज चिल्ड्रेन() को कैसे कॉल करना और 1 रिकॉर्ड वापस करना कभी सही माना जाएगा - यह एक प्रक्षेपण नहीं है। अर्थात। अगर मैं डिफ़ॉल्ट लाने का चयन का उपयोग करने के क्वेरी को बढ़ाने, यह यद्यपि प्रश्नों की एक भीड़ के साथ उचित बच्चों संग्रह देता है,:
c.createAlias("children", "c").add(
Restrictions.in("c.property", properties));
यह एक बग है? यदि नहीं, तो मैं अपना वांछित परिणाम कैसे प्राप्त कर सकता हूं?
ठीक है, एसक्यूएल आसान हिस्सा है। मैं जो खोज रहा हूं वह मानदंड कॉल है। ;) इसके अलावा, ध्यान रखें कि इसे बच्चों की संस्थाओं को पॉप्युलेट करने के लिए बाहरी शामिल होने की आवश्यकता होगी। –
तो दूसरा प्रश्न माता-पिता और आलसी बच्चों को लोड कर रहा है? – dfb
हां, प्रत्येक अभिभावक रिकॉर्ड के लिए एक बाल प्रश्न निष्पादित किया जा रहा है, जिसे मैं टालने की कोशिश कर रहा हूं। ऐसा लगता है कि यह वास्तव में एक दोष हो सकता है, लेकिन अगर कोई कामकाज करता है तो मैं उत्सुक हूं: https://hibernate.onjira.com/browse/HHH-3524 –