从休眠列表中选择所有项目

时间:2011-06-15 16:19:52

标签: java sql database hibernate

我有一个产品ID列表,我希望通过hibernate查询从我的数据库中获取所有产品。我怎么能这样做?

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

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

2 个答案:

答案 0 :(得分:22)

您需要做两件事......第一件事是将您的HQL更改为以下(使用IN),第二件是绑定您的参数列表:

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

答案 1 :(得分: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)");