SELECT DISTINCT + ORDER BY in der JPA 2 Criteria API
Ich habe eine KlasseLawsuit
, das ein @ enthäList<Hearing>
, jeder mit einemDate
attribute.
Ich muss alle @ auswählLawsuit
s sortiert nach dem Datum ihresHearing
s
Ich habe eine CriteriaQuery wie
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Lawsuit> cq = cb.createQuery(Lawsuit.class);
Root<Lawsuit> root = cq.from(Lawsuit.class);
Ich benutze distinct um die Ergebnisse zu reduzieren:
cq.select(root).distinct(true);
Ich habe dannbeitrete Lawsuit
mitHearing
Join<Lawsuit, Hearing> hearing = root.join("hearings", JoinType.INNER);
erschaffenPredicate
s
predicateList.add(cb.isNotNull(hearing.<Date>get("date")));
undOrder
s:
orderList.add(cb.asc(hearing.<Date>get("date")));
Alles funktioniert gut, wenn ich @ vermeiddistinct
, aber wenn ich es benutze, beschwert es sich, dass es nicht in der Lage ist, basierend auf Feldern zu bestellen, die nicht in SELECT enthalten sind:
Verursacht durch: org.postgresql.util.PSQLException: ERROR: forSELECT DISTINCT
, ORDER BY
Ausdrücke müssen in der Auswahlliste erscheinen
DasList<Hearing>
ist bereits über das @ erreichbLawsuit
Klassen zurückgegeben, also bin ich verwirrt:wie soll ich sie zur Auswahlliste hinzufügen?