【发布时间】:2019-06-28 04:48:18
【问题描述】:
我正在尝试在 HQL 中使用子查询的结果(子查询返回 3 列的结果)加入一个表,但我收到了语法错误 org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token。
看起来 INNER JOIN 在 HQL 中不像在 SQL 中那样工作,所以我查看了 https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-subqueries 但没有帮助。
HQL 查询
SELECT R
FROM Table R
INNER JOIN (
SELECT T.id.col1, T.id.col2, MAX(T.col3) max_num
FROM Table T
GROUP BY T.id.col1
) b ON R.id.col1 = b.id.col1 AND R.col3 = b.max_num
WHERE R.id.col3 = :param
GROUP BY R.id.col1
ORDER BY R.col3 DESC
实际结果
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 81
预期结果
包含 T.col3 最大值的唯一行。
注意:上述查询的 SQL 版本可以正常工作。
【问题讨论】: