我有一个产品ID列表,我希望通过hibernate查询从我的数据库中获取所有产品。我怎么能这样做?
List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id =: list");
我知道这不是解决此问题的最佳方法,但我只是想知道如何测试列表中的所有值。
答案 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)");