spring-boot - 如何使用 JPA 计算列的平均值?
问题描述
我想计算一列的平均值。我尝试了以下方法:
@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]
什么是正确的语法?我的表映射有什么问题?
解决方案
您必须使用实体名称,而不是表。同样适用于列名称,您必须使用字段名称。
我假设您的实体是 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)
推荐阅读
- c++ - 给定两个值时,输入循环循环两次
- numpy - 在python中删除多维数组的一部分
- javascript - 图像未从服务器 HTML/JS 中提取
- jquery - 带有物化模式的django更新表单
- c++ - 有没有办法将 std::string 转换为向量
在 C++ 中? - python - 将python变量的值上传到GCS中的文件而不写入本地源文件?
- python - 在 streamlit 自动执行计划任务
- c - 读者-作者问题,赋予读者更高的优先权
- maven - 让 Junit 测试结果显示在 TeamCity 的测试选项卡中
- r - 请建议 R 中的代码使用 ts 命令创建每日系列