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