我想计算一列的平均值。 我尝试了以下方法:
@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]
正确的语法是什么?我的表的映射有什么问题?
答案 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)