2009-02-20 7 views
62

को देखते हुए निम्नलिखित HQL क्वेरी:हाइबरनेट एचक्यूएल क्वेरी: एक क्वेरी के नामित पैरामीटर के रूप में संग्रह कैसे सेट करें?

FROM 
    Foo 
WHERE 
    Id = :id AND 
    Bar IN (:barList) 

मैं क्वेरी वस्तु की setInteger() पद्धति का उपयोग करके :id निर्धारित किया है।

मैं :barList को List ऑब्जेक्ट्स का उपयोग करके सेट करना चाहता हूं, लेकिन हाइबरनेट दस्तावेज़ों और विधियों की सूची को देखकर मैं उपयोग करने के लिए एक स्पष्ट पसंद नहीं देख सकता। कोई विचार?

उत्तर

89

खोज करते समय उपयोग Query.setParameterList(), Javadoc here नाम का संग्रह है।

से चुनने के लिए चार प्रकार हैं।

+0

इस ओर इशारा करते हुए के लिए धन्यवाद देखो! JavaDoc को देखते समय मैंने इसे पूरी तरह से अनदेखा कर दिया। – karlgrz

+2

डी: ओह नोएस, टूटी हुई लिंक (... जेबॉस डॉक्स के दर्दनाक रूप से विशिष्ट) –

+2

यह केवल तभी काम करता है जब आप हाइबरनेट क्वेरी ऑब्जेक्ट का उपयोग कर रहे हों, लेकिन यदि आप 'javax.persistence.Query' आयात करते हैं तो काम नहीं करेगा। केवल मेरे दो सेंट्स। –

30

मुझे एचक्यूएल के बारे में निश्चित नहीं है, लेकिन जेपीए में आप पैरामीटर और संग्रह के साथ क्वेरी setParameter पर कॉल करें।

Query q = entityManager.createQuery("SELECT p FROM Peron p WHERE name IN (:names)"); 
q.setParameter("names", names); 

जहां names आप के लिए

Collection<String> names = new ArrayList<String(); 
names.add("Joe"); 
names.add("Jane"); 
names.add("Bob"); 
1

TorpedoQuery में यह इस तरह

Entity from = from(Entity.class); 
where(from.getCode()).in("Joe", "Bob"); 
Query<Entity> select = select(from); 
+5

यह सवाल का उत्तर कैसे देता है? कृपया अपनी परियोजना के लिंक पोस्ट न करें अगर वे सीधे समस्या का समाधान नहीं करते हैं। – Mat

+1

यह एक स्थिति में एक एचक्यूएल क्वेरी उत्पन्न करता है – xjodoin