JPA条件API IN表达式参数列表 [英] JPA Criteria API IN expression Parameter list

查看:109
本文介绍了JPA条件API IN表达式参数列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有这样的一个可能性:

 列表< 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);
根< Bewerbung> bewerbung = criteriaQuery.from(Bewerbung.class);

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

return em .createQuery(criteriaQuery).getResultList();

表达式 .value列表)不起作用 value()期待类型long的参数不是列表
在我的情况下它不是可以使用子查询
任何人都可以帮助我解决这个问题?

解决方案

不需要使用 CriteriaBuilder#isTrue 这应该足够了:

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


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?

解决方案

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

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

这篇关于JPA条件API IN表达式参数列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆