Czy istnieje możliwość użycia listy parametrów w API Kryteriów .w wyrażeniu?JPA Kryteria API IN wyrażenie Lista parametrów
mam coś takiego:
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();
Wyrażenie .value(list)
nie działa jak value()
spodziewa się paramter typu długi nie lista. W moim przypadku nie można użyć podkwerendy. Czy ktoś może mi pomóc w tej sprawie?
Wielkie dzięki, to działa, ale używam Hibernacja i wydaje się, że Hibernacja nie obsługuje pustą kolekcję jako parametr javax.persistence.criteria.Expression „w” parametr metody. Zobacz http://lists.jboss.org/pipermail/hibernate-issues/2011-December/035927.html – user1414341
AFAIK, nikt ich nie obsługuje. Prawdopodobnie powinieneś sprowadzić zapytanie, jeśli pusta lista zostanie przekazana jako argument. –
Znalazłem to wyrażenie (owinięte w isTrue) podnosi wyjątek PREDICATE_PASSED_TO_EVALUATION w EclipseLink 2.6.2, ale bez zawijania isTrue działa idealnie jako predykat w moim przykładzie prawdopodobnie dlatego, że "w" zwraca z predykatem obiektu. –