2011-04-06 6 views
7

पर प्रतिबंध कैसे सेट करूं मैं एक हाइबरनेट मानदंड क्वेरी बनाने के लिए संघर्ष कर रहा हूं जो setFetchMode (... SELECT) का उपयोग करता है और लौटे हुए बच्चों के रिकॉर्ड पर प्रतिबंध लगाता है। यदि मैं एक creteAlias ​​का उपयोग करने की सिफारिश करता हूं तो यह एक आंतरिक जुड़ाव उत्पन्न करता है जिससे सटीक पृष्ठांकन असंभव हो जाता है।हाइबरेट मानदंडों में setFetchMode का उपयोग करते समय मैं एक टोमनी टेबल

कोड की तरह होगी: -

Criteria criteria = this.getSession().createCriteria(Mother.class); 
criteria.addOrder(Order.asc("title")) 
// .createAlias("children", "childrenAlias") had to remove 
.add(Restrictions.eq("childAge", "5")) // how do I reference childAge? 
.setMaxResults(details.getMaxRows()) 
.setFirstResult(details.getStart()) 
.setFetchMode("children", FetchMode.SELECT); 

उत्तर

8

भगवान जानता है, जहां मैं जब मैं इस पोस्ट पर था। सोचा कि मैं जवाब साफ करने के लिए जवाब पोस्ट करेंगे।

कोड मैं याद आ रही थी निम्नलिखित था: -

Criterion child = Restrictions.eq("childAlias.childName", "Albert"); 
criteria.createAlias("children", "childAlias", CriteriaSpecification.INNER_JOIN); 
criteria.add(child); 
+0

के बाद से '' CriteriaSpecification.INNER_JOIN'' हटाई गई है, आप का उपयोग करना चाहिए [ '' JoinType.INNER_JOIN''] (http: // इसके बजाय docs.jboss.org/hibernate/orm/current/javadocs/org/hibernate/sql/JoinType.html#INNER_JOIN) – user1686407