Как написать запрос JPA для ниже SQL?
select * from opstatus o where o.OPERATIONTYPE=2 and o.RECEIVEDFLAG =2 and o.SENDTIME in (select max(o1.SENDTIME)from opstatus o1 where (o1.OPERATIONTYPE=2 and o1.RECEIVEDFLAG =2) group by o1.dn);
Попытка выполнить следующий запрос
result = em.createQuery("select o from DTO o where "
+ "o.operationType=:operationType"
+ " and o.receivedFlag = :receivedFlag"
+ " and o.startTime in (select max(o1.startTime)from DTO o1 where
o1.receivedFlag = :receivedFlag group by o1.Dn) order by o.startTime").
setParameter("operationType","2").
setParameter("receivedFlag", "2").getResultList();
Однако, во время выполнения ниже генерируется запрос, который имеет дополнительную «группу по T2.DN», для которой мы получаем «org.apache.openjpa.persistence.PersistenceException: ORA-00979: не выражение GROUP BY»
ВЫБЕРИТЕ t0.OPERATIONID, t0.CURRENTSTEP, t0.DETAILEDSTEPS, t0.DN, t0.OPERATIONTYPE, t0.RECEIVEDFLAG, t0.REQUESTID, t0.SENDTIME ОТ OPSTATUS t0, ИСПОЛЬЗОВАНИЕ t0 ИЛИ T0ER .RECEIVEDFLAG =? И t0.SENDTIME IN (ВЫБЕРИТЕ МАКС. (T1.SENDTIME) ОТ ОПСТАТА t1 ГДЕ (t1.OPERATIONTYPE =? И t1.RECEIVEDFLAG =?) GROUP BY t1.DN)) GROUP BY t2.DN [params =? ,?,?,?]
Как предотвратить добавление дополнительной группы путем добавления? Я пытался добавить 'order by o.sendtime' без толку.