JPA Criteria API IN 表达式 参数列表

2022-09-01 16:32:52

是否可以在条件 API .in 表达式中使用参数列表?

我有这样的东西:

    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()


答案 1

无需使用 。这应该足够:CriteriaBuilder#isTrue

criteriaQuery.select(bewerbung)
             .where(bewerbung.get(Bewerbung_.bewerberNummer)
             .in(list));

答案 2
cb.isTrue(bewerbung.get(Bewerbung_.bewerberNummer).in(list));

应该做这个把戏,AFAIK。


推荐