[英]Convert MySql query to JPA named query
我有一個像這樣的MySql
查詢:
select AK.*, max(AA.activityDate)
from AssessmentKey AK
join AssessmentActivity AA on AA.ASSESSMENTKEY_ID = AK.id
group by AK.id having max(AA.activityDate) <= '2012-10-02 17:30:55'
有沒有辦法轉換成JPA
NamedQuery
。 我正在使用OpenJPA
。
如果我把它直接放入:
@NamedQuery(name = "AssessmentActivity.findByDate",
query = "select AK.*, max(AA.activityDate) from AssessmentKey AK
join AssessmentActivity AA on AA.ASSESSMENTKEY_ID = AK.id
group by AK.id having max(AA.activityDate) <= '2012-10-02 17:30:55'")
該錯誤是在這里顯示: select AK.*
該identifier expected, got "*"
,也不會像on
,在這里它說:
我該如何解決這個問題?
第一個問題:你應該更換AK.*
與AK
,你只需要在這里的實體別名。
第二個問題:連接語法不是那樣的。 您應該編寫: join
並瀏覽對象引用,例如:AK.assesmentActivity並使用where
關鍵字而不是on
這是關於加入的提示: JPQL加入
請記住:您在ORM中處理實體及其屬性,而不是DB外鍵和列。
(ps:也許你想編寫一個NativeQuery
?你可以使用本機SQL語法)
編輯:(在你的評論上)所以你必須從AA開始你的查詢:
select AK from AssesmentActivity AA join AssesmentKey AK where AA.assesmentKey = AK ...
這樣你就可以加入他們了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.