如何使用JPA计算列的平均值?

时间:2018-12-03 12:33:29

标签: spring-boot spring-data-jpa average

我想计算一列的平均值。 我尝试了以下方法:

@Query("SELECT AVG(e.rating) FROM user_rating e WHERE e.route_uid = ?1")
fun averageOfRateings(routeId: UUID): Long

查询在Sql中有效,但是在Spring Boot中运行代码时出现以下错误。

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException:
user_rating is not mapped [SELECT AVG(e.rating) FROM user_rating e WHERE e.route_uid = ?1] 

正确的语法是什么?我的表的映射有什么问题?

1 个答案:

答案 0 :(得分:3)

必须使用实体名称,而不是表。列名称也是如此,必须使用字段名称。

我假设您的实体是UserRating,所以正确的查询将是:

@Query("SELECT AVG(e.rating) FROM UserRating e WHERE e.routeUid = ?1") 

或第二个选项指定是本机查询:

@Query(value = "SELECT AVG(e.rating) FROM user_rating e WHERE e.route_uid = ?1" , nativeQuery = true)