2011-06-15 53 views
12

我有一个产品ID列表,我想从我的数据库中获得所有产品的Hibernate查询。我怎样才能做到这一点?从休眠列表中选择所有项目

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

我知道这不是解决这个问题的最好方法,但我只想知道如何测试列表中的所有值。

回答

22

这里你需要做的......首先是要改变你的HQL以下(利用IN)的两件事情,第二个是绑定你的参数列表:

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

谢谢你,这个诀窍 – fibera 2011-06-15 16:45:04

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)");