簡體   English   中英

將MySql查詢轉換為JPA命名查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM