私はかなり複雑な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