【发布时间】:2011-06-23 19:37:22
【问题描述】:
我正在尝试编写一个相当复杂的 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 被简单地忽略了。
建议?
【问题讨论】:
-
您的实体是如何映射的?