我定义了以下方法:
@Query("SELECT AVG(total) FROM (SELECT COUNT(t.name) total FROM DataTable t GROUP BY DATE(actiontime)) result")
Long countAvg();
但是它会导致此错误:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 24 [SELECT AVG(total) FROM (SELECT COUNT(t.name) total FROM backend.DataTable t GROUP BY DATE(actiontime)) result]
但是以下SQL工作正常:
SELECT AVG(total) FROM (SELECT COUNT(NAME) total FROM DATA_TABLE GROUP BY DATE(actiontime)) result
如果我理解正确,JPQL会出现子查询问题。那我该如何创建这种查询?
答案 0 :(得分:3)
我认为jpql不支持带有subselect
子句的from
。根据{{3}}
子查询仅限于此版本中的WHERE和HAVING子句。将在规范的后续版本中考虑对FROM子句中的子查询的支持。
您可以在nativeQuery = true
注释中使用@Query
,并将其作为本机查询运行,或者尽可能重写查询。