2011-06-15 18 views
12

Ürün kimlikleri listem var ve tüm ürünlerimi db hazırda bekletme sorgusuyla almak istiyorum. Bunu nasıl yapabilirim? Hazırda bekletme listesindeki bir listeden tüm öğeleri seçin

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

ben bu çözmek için en iyi yol değildir biliyorum, ama ben sadece bir listedeki tüm değerleri için test edebilirsiniz nasıl bilmek istiyorum.

cevap

22

öncelikle aşağıdaki (IN yapım kullanımı) için HQL değiştirmektir ... yapmanız gereken iki şey vardır, ve ikinci etmektir Parametre listenizi bağlayın:

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

Teşekkürler, bu hile yaptı – fibera

0

emin değil seni almaya ama bu bağlantıya göz atın: Özellikle bu pasajı 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..."); 
} 

Aslında sadece sorunuzu tekrar okumak ve sana bir alt seçme istiyorum görüyoruz. Sen gibi bir sorgu kullanmayı düşünmelisiniz:

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