다른 테이블의 값을 기반으로 결과를 정렬하는 상당히 복잡한 JPQL 문을 작성하려고합니다. MySQL이 어떻게 보이는지 알지만 JPQL로 전환하는 데 도움이 필요합니다. 다음은 동등한 SQL입니다.복잡한 JPQL ORDER 문
SELECT o.* FROM Observation o
LEFT JOIN Obs_Event p
ON p.Event_ID = o.Event_ID
LEFT JOIN Event_Set ppp
ON ppp.Event_ID = o.Event_ID AND ppp.Event_Set_ID = o.Event_Set_ID
WHERE o.Individual_ID = <some id>
AND o.Observation_Date = <a date value>
ORDER BY ppp.Seq_Num ASC
이 작업을 수행하는 방법에 대한 도움이 필요하시면 크게 감사하겠습니다. 특히 나는이 부분에 문제가 보인다 :
ON ppp.Event_ID = o.Event_ID AND ppp.Event_Set_ID = o.Event_Set_ID
그래서, 지금까지 내가 이것을 시도했다 :
Query q= em.createQuery("select o " +
" from Observation as o " +
" join o.eventID p" +
" join p.eventSetCollection ppp " +
" where o.individualID = :indiv " +
" AND o.observationDate = :d " +
" AND o.eventID = ppp.event " +
"";
내가
WHERE ...
AND o.eventSetID = ppp.eventSet
같은 것을 추가하려고하면 ... 단순히 작동하지 않습니다. 생성 된 SQL을 보면 ppp.eventSet이 단순히 무시 된 것처럼 보입니다.
제안 사항?
엔티티는 어떻게 매핑됩니까? – axtavt