繁体   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