SELECCIONE DISTINCT + ORDER BY en JPA 2 Criteria API
Tengo una claseLawsuit
, que contiene unList<Hearing>
, cada uno con unDate
atributo.
Necesito seleccionar todos losLawsuit
s ordenado por la fecha de suHearing
s
Tengo una CriteriaQuery como
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Lawsuit> cq = cb.createQuery(Lawsuit.class);
Root<Lawsuit> root = cq.from(Lawsuit.class);
yo suelodistinto para aplanar los resultados:
cq.select(root).distinct(true);
entonces younirse Lawsuit
conHearing
Join<Lawsuit, Hearing> hearing = root.join("hearings", JoinType.INNER);
crearPredicate
s
predicateList.add(cb.isNotNull(hearing.<Date>get("date")));
yOrder
s:
orderList.add(cb.asc(hearing.<Date>get("date")));
Todo funciona bien si evitodistinct
, pero si lo uso, se queja de no poder ordenar en función de los campos que no están en SELECT:
Causado por: org.postgresql.util.PSQLException: ERROR: forSELECT DISTINCT
, ORDER BY
las expresiones deben aparecer en la lista de selección
losList<Hearing>
ya es accesible a través delLawsuit
las clases regresaron, así que estoy confundido:¿Cómo debo agregarlos a la lista de selección?