Code: Select all
jakarta.platform
jakarta.jakartaee-api
11.0.0-M4
provided
Code: Select all
...
predicates = new Predicate[] {
...
criteriaBuilder.in(root.get("zone").in(zoneList))
...
}
criteriaQuery.where(predicates);
Der generierte SQL-Teil für die „IN“-Klausel enthält IN (NULL) , und daher werden keine Zeilen in der Datenbank gefunden.
Code: Select all
AND (
(
t0.zone IN (?, ?)
) IN (NULL)
)
Hier ist der vollständige Java-Code
Code: Select all
public List report() {
EntityManager em = getEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery criteriaQuery = cb.createQuery(DBEntity.class);
Root root = criteriaQuery.from(DBEntity.class);
Predicate[] predicates = new Predicate[] {
cb.in(root.get("zone").in(Arrays.asList("Zone 1")))
};
criteriaQuery.where(predicates);
criteriaQuery.select(root);
TypedQuery query = em.createQuery(criteriaQuery);
return query.getResultList();
}