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

3
我想在一列上计算平均值。 我尝试了以下方法:
@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
你的 user_rating 应该与实体名称完全相同,就像答案中提到的那样。 - Patrick
1个回答

7

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

我假设您的实体是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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接