2011-06-15 9 views
12

में किसी सूची से सभी आइटमों का चयन करें मेरे पास उत्पाद आईडी की एक सूची है और मैं अपने डीबी से सभी उत्पादों को हाइबरनेट क्वेरी के साथ प्राप्त करना चाहता हूं। मैं यह कैसे कर सकता हूँ?हाइबरनेट

List<Integer> list = custumor.getCart(); 
Query query = query("select product from Product product where product.id =: list"); 

मैं जानता हूँ कि यह इस को हल करने के लिए सबसे अच्छा तरीका नहीं है, लेकिन मैं सिर्फ पता है कि कैसे मैं एक सूची में सभी मूल्यों के लिए परीक्षण कर सकते हैं चाहता हूँ।

उत्तर

22

दो चीजें आप क्या करना ... पहले (IN का इस्तेमाल कर रही) निम्नलिखित करने के लिए अपने HQL बदलने के लिए है की आवश्यकता होगी, और दूसरा है अपनी पैरामीटर सूची को बाध्य करें:

Query query = query("select product from Product product where product.id IN :list") 
    .setParameterList("list", list); 
+0

धन्यवाद, यह चाल है – fibera

0

सुनिश्चित नहीं हैं कि मैं तुम्हें मिल लेकिन इस कड़ी की जाँच: इस स्निपेट विशेष रूप http://www.coderanch.com/t/217864/ORM/java/Hibernate-retrieve-data-database

:

public static void retrieve() { 
    AnnotationConfiguration config = new AnnotationConfiguration(); 
    config.addAnnotatedClass(User.class); 
    SessionFactory factory= config.configure().buildSessionFactory(); 
    Session session = factory.getCurrentSession(); 
    session.beginTransaction(); 
    Query queryResult = session.createQuery("from User"); 
    java.util.List allUsers; 
    allUsers = queryResult.list(); 
    for (int i = 0; i < allUsers.size(); i++) { 
    User user = (User) allUsers.get(i); 
    } 
System.out.println("Database contents delivered..."); 
} 

असल में मैं सिर्फ अपने प्रश्न को फिर से पढ़ सकते हैं और मैं तुम्हें एक उप चयन चाहते हैं। आप की तरह एक क्वेरी का उपयोग पर विचार करना चाहिए:

List<Integer> list = custumor.getCart(); 
Query query = query("select product from Product product where product.id IN (: list)");