query example ejemplos criteriabuilder create consultas java jpa expression criteria-api

java - example - jpa sql



Criterios JPA API IN expresión Lista de parámetros (2)

No es necesario usar CriteriaBuilder#isTrue . Esto debería ser suficiente:

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

¿Existe la posibilidad de utilizar una lista de parámetros en la expresión .in de Criteria API?

Tengo algo como esto:

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

La expresión .value(list) no funciona ya que value() espera un parámetro de tipo long no una lista. En mi caso, no es posible usar una subconsulta. ¿Alguien puede ayudarme en este tema?


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

debería hacer el truco, AFAIK.