mysql - findAllUseCountTop1ByIsActiveOrderById(Boolean isActive) 不会生成带有“LIMIT 1”的查询
问题描述
为什么 JPA 不对查询应用“LIMIT 1”?我正在尝试在 SpringBoot 应用程序中编写一个存储库函数,以从顶部获取第一个结果,其中“isActive”在按 ID 排序时为 TRUE。此函数生成一个不包含“LIMIT 1”的查询,这会返回多个结果,并且由于“查询未返回唯一结果:4”异常而失败。我使用 Hibernate Core v5.3.7.Final 和 MySQL v8.0.12 作为数据库。
生成的查询:
select phoneinfo0_.id as id1_0_, phoneinfo0_.Phone as Phone2_0_, phoneinfo0_.isActive as isActive3_0_, phoneinfo0_.useCount as useCount4_0_ from contactNumbers phoneinfo0_ where phoneinfo0_.isActive=1 order by phoneinfo0_.id asc;
结果返回:
+--------+------------+--------------+--------------+
| id1_0_ | Phone2_0_ | isActive3_0_ | useCount4_0_ |
+--------+------------+--------------+--------------+
| 1 | 1111111111 | 1 | 0 |
| 2 | 9999999999 | 1 | 0 |
| 3 | 9000000000 | 1 | 0 |
| 4 | 2222222222 | 1 | 0 |
+--------+------------+--------------+--------------+
另外请告诉我“ORDER BY ID”是否是必要的,或者如果 ID 是主键自动递增,则默认情况下是否在每次选择时完成?
解决方案
尝试将其重命名为以下之一:
findTop1UseCountByIsActiveOrderById(Boolean isActive)
findFirstUseCountByIsActiveOrderById(Boolean isActive)
推荐阅读
- python - 为什么计算列表的行为与书面列表不同
- angular - 如何在没有 disabled() 函数的情况下在 Angular8 中使 FomrGroup 只读?
- ios - WKWebView 在 Xamarin 的 iOS 12 下不会显示 doc、docx、png、txt
- php - TYPO3 分页首页
- javascript - 非中断空间在 vue 模板中呈现为常规空间
- php - (概念混淆)App\User::role 必须返回一个关系实例(雄辩的关系工作,但查询生成器不工作)
- node.js - 无法更新云 Firestore 中的文档
- three.js - ThreeJS:将对象位置设置为控件目标
- c - 为什么当数字的位数大于4时,结果被破坏
- python - 类导入:ImproperlyConfigured:SECRET_KEY 设置不能为空