我有一个产品ID列表,我想从我的数据库中获得所有产品的Hibernate查询。我怎样才能做到这一点?从休眠列表中选择所有项目
List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id =: list");
我知道这不是解决这个问题的最好方法,但我只想知道如何测试列表中的所有值。
我有一个产品ID列表,我想从我的数据库中获得所有产品的Hibernate查询。我怎样才能做到这一点?从休眠列表中选择所有项目
List<Integer> list = custumor.getCart();
Query query = query("select product from Product product where product.id =: list");
我知道这不是解决这个问题的最好方法,但我只想知道如何测试列表中的所有值。
这里你需要做的......首先是要改变你的HQL以下(利用IN)的两件事情,第二个是绑定你的参数列表:
Query query = query("select product from Product product where product.id IN :list")
.setParameterList("list", list);
不知道我得到你,但看看这个链接: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)");
谢谢你,这个诀窍 – fibera 2011-06-15 16:45:04