JPQL @Query导致“意外令牌:(”

时间:2016-03-26 08:18:31

标签: spring-data-jpa jpql

我定义了以下方法:

@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会出现子查询问题。那我该如何创建这种查询?

1 个答案:

答案 0 :(得分:3)

我认为jpql不支持带有subselect子句的from。根据{{​​3}}

  

子查询仅限于此版本中的WHERE和HAVING子句。将在规范的后续版本中考虑对FROM子句中的子查询的支持。

您可以在nativeQuery = true注释中使用@Query,并将其作为本机查询运行,或者尽可能重写查询。