web-dev-qa-db-fra.com

JPA Criteria API IN expression Liste de paramètres

Est-il possible d'utiliser une liste de paramètres dans l'expression .in de l'API Criteria?

J'ai quelque chose comme ça:

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

L'expression .value(list) ne fonctionne pas car value() attend un paramètre de type long et non une liste. Dans mon cas, il n'est pas possible d'utiliser une sous-requête. Quelqu'un peut-il m'aider sur cette question?

26
user1414341

Pas besoin d'utiliser CriteriaBuilder#isTrue. Cela devrait suffire:

criteriaQuery.select(bewerbung)
             .where(bewerbung.get(Bewerbung_.bewerberNummer)
             .in(list));
37
jFrenetic
cb.isTrue(bewerbung.get(Bewerbung_.bewerberNummer).in(list));

devrait faire l'affaire, AFAIK.

33
JB Nizet