是否有可能在Criteria API .in expression中使用参数列表?
我有这样的事情:
List<Long> list = new ArrayList<Long>();
list.add((long)1);
list.add((long)2);
list.add((long)3);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Bewerbung> criteriaQuery = cb.createQuery(Bewerbung.class);
Root<Bewerbung> bewerbung = criteriaQuery.from(Bewerbung.class);
criteriaQuery.select(bewerbung).where(
cb.in(bewerbung.get(Bewerbung_.bewerberNummer)).value(list);
return em.createQuery(criteriaQuery).getResultList();
表达式.value(list)
不起作用,因为value()
期望类型为long的参数不是列表。
在我的情况下,不可能使用子查询。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:34)
无需使用CriteriaBuilder#isTrue
。这应该足够了:
criteriaQuery.select(bewerbung)
.where(bewerbung.get(Bewerbung_.bewerberNummer)
.in(list));
答案 1 :(得分:32)
cb.isTrue(bewerbung.get(Bewerbung_.bewerberNummer).in(list));
应该做的,AFAIK。