26

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

リストではなく long 型のパラメーターを期待しているため、式.value(list)は機能しません。value()私の場合、サブクエリを使用することはできません。誰でもこの問題について私を助けることができますか?

4

2 に答える 2

37

使用する必要はありませんCriteriaBuilder#isTrue。これで十分です:

criteriaQuery.select(bewerbung)
             .where(bewerbung.get(Bewerbung_.bewerberNummer)
             .in(list));
于 2012-10-30T18:23:54.850 に答える
34
cb.isTrue(bewerbung.get(Bewerbung_.bewerberNummer).in(list));

私の知る限り、トリックを行う必要があります。

于 2012-05-24T07:56:41.300 に答える