2009-11-11 13 views
6

अब तक मैं के साथ 2 गुणों के साथ केवल एक मामले के साथ काम कर रहा है के रूप में तार्किक ऑपरेटर के साथ कार्य करना तो मैं इतनाहाइबरनेट अनेक AND और तार्किक साथ मानदंड

Criterion eqRef = Restrictions.eq("referenceID", referenceId); 
Criterion eqType = Restrictions.eq("verificationType", type); 
LogicalExpression and = Restrictions.and(eqRef, eqType); 

अपने 2 की तुलना में अधिक के साथ इस बार की तरह LogicalExpression का उपयोग तो मैं थोड़ा इस बार confused.say मैं उपयोगकर्ता नाम संपत्ति जोड़ दिया है मैं

session.createCriteria(this.getPersistentClass()) 
.add(Restrictions.eq("referenceID", referenceId)) 
.add(Restrictions.eq("verificationType", type)) 
.add(Restrictions.eq("username", username)) 
.list(); 

के साथ सामान्य श्रृंखलन कर सकते हैं कर रहा हूँ, लेकिन अब मैं तार्किक ऑपरेटर किस तरह की them.i'm के बीच इस्तेमाल किया पता नहीं है ऐसा करने के लिए भी लुभाना:

Criterion eqRef = Restrictions.eq("referenceID", referenceId); 
Criterion eqType = Restrictions.eq("verificationType", type); 
Criterion equsername = Restrictions.eq("username", username); 
LogicalExpression and = Restrictions.and(eqRef, eqType); 
LogicalExpression secondand = Restrictions.and(and, equsername); 

मैंने eqAll भी देखा है, लेकिन मैंने पहले कभी इसका उपयोग नहीं किया है। तो क्या आपको इसके बारे में कोई जानकारी है? आप इसे कैसे करते हैं, और इसे पढ़ने के लिए धन्यवाद।

उत्तर

10

चूंकि आप अपने सभी प्रतिबंधों को "और" कर रहे हैं, इसलिए समूहिंग अप्रासंगिक है, इसलिए आप अपने दूसरे उदाहरण में जारी रह सकते हैं, क्योंकि उन्हें उपसमूह द्वारा प्राप्त करने के लिए कुछ भी नहीं है, उदा।

.add(Restrictions.eq("referenceID", referenceId)).add(Restrictions.eq("verificationType", type)).add(Restrictions.eq("username", username))... 

आप इस समस्या जहां मिश्रित "और" और "या" प्रश्नों, यदि आप "या" समूह से कई करना चाहते मूल्यों समूह की जरूरत है आप भी एक Disjunction

+0

धन्यवाद dude.Really –

1

लिए मानदंड जोड़ सकते हैं में चला सकता हूँ इन प्रतिबंधों को व्यक्तिगत रूप से जोड़ना उनके बीच 'और' का रिश्ता बनाता है। यह आपके लिए आवश्यक है के लिए पर्याप्त है।

+0

यह सराहना की –

0

लेकिन अब मुझे नहीं पता कि किस प्रकार के लॉजिकल ऑपरेटर उनके बीच उपयोग किया जाता है।

अच्छा जवाब पहले से ही है, लेकिन के रूप में एक अलग रूप में आप संपत्ति hibernate.show_sql उपयोग कर सकते हैं, यह सही पर सेट किया है, और आप वास्तव में क्या sql आपके मानदंडों का निर्माण कर रहा है देखने के लिए सक्षम हो जाएगा।

+0

ठीक आदमी धन्यवाद? मैं उन्हें प्रश्न में नहीं देखता हूं और मुझे नहीं पता कि आप उनका उपयोग क्यों करेंगे। –

-1

बस का उपयोग इस

criteria = session.createCriteria(Model.class).add(
          Restrictions.between("ModelDate", dateMin, dateMax)); 
+0

readking आप व्याख्या कर सकते हैं क्या "ModelDate", "tglMin", और "tglMax" कर रहे हैं के लिए अपने समय के लिए धन्यवाद –

+0

मॉडलडेट मॉडल/इकाई से दिनांक कॉलम है, tglMin और tglMax मेरा मतलब है तारीख और दिनांक मैक्स प्रतिबंध के बीच में। – irbef

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