JPA Criteria API IN expression Parameter list

谁说我不能喝 提交于 2019-11-30 13:11:38

问题


Is there a possibility to use a parameter list in Criteria API .in expression?

I have something like this:

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

The expression .value(list) does not work as value() is expecting a paramter of type long not a list. In my case it is not possible to use a subquery. Can anyone help me on this issue?


回答1:


No need to use CriteriaBuilder#isTrue. This should suffice:

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



回答2:


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

should do the trick, AFAIK.



来源:https://stackoverflow.com/questions/10732970/jpa-criteria-api-in-expression-parameter-list

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!