【发布时间】:2014-03-08 19:32:20
【问题描述】:
我从 JPA 查询开始。我试图找出如何将集合设置为“成员” where 子句的参数。 取Ultimate JPA Queries and Tips List – Part 1中描述的Model
private static boolean isThisDogBelongingToAperson(EntityManager em, Dog dog, String name) {
Query query = em.createQuery('select count(p) from Person p where :dog member of p.dogs and p.name = :name');
query.setParameter('dog', dog);
query.setParameter('name', name);
try {
return query.getSingleResult() != null;
} catch (Exception e) {
return false;
}
}
这只是将 Dog 的一个实例作为参数。如果我有一个狗列表和 wnat 来创建一个名为“isAnyOfTheseDogsBelongingToAperson”的方法怎么办。我是否需要为 Dog 列表的每个元素多次调用上述方法,或者有没有办法将集合传递给查询?例如:
private static boolean isAnyOfTheseDogsBelongingToAperson(EntityManager em, List<Dog> dogs, String name) {
Query query = em.createQuery('select count(p) from Person p where :dogs member of p.dogs and p.name = :name');
query.setParameter('dogs', dogs);
query.setParameter('name', name);
try {
return query.getSingleResult() != null;
} catch (Exception e) {
return false;
}
}
【问题讨论】:
-
你可以将集合传递给
setParameter,如果没有结果,`getSingleResult`也会抛出异常-它不返回null-stackoverflow.com/questions/2002993/jpa-getsingleresult-or-null,这个问题也和你的stackoverflow.com/questions/21644726/…类似
标签: java hibernate jakarta-ee jpa