【发布时间】:2019-05-27 16:26:12
【问题描述】:
为什么 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 是主键自动递增,是否默认在每次选择时完成?
【问题讨论】:
标签: mysql hibernate jpa spring-data-jpa