Я пытаюсь написать довольно сложный оператор JPQL, который сортирует результаты по значению в другой таблице. Я знаю, как будет выглядеть MySQL, но мне нужна помощь, чтобы превратить его в JPQL. Вот эквивалентный SQL:
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 просто игнорируется.
Предложения?