findAllUseCountTop1ByIsActiveOrderById (Boolean isActive) не создает запрос с «LIMIT 1» - PullRequest
0 голосов
/ 31 декабря 2018

Почему JPA не применяет «LIMIT 1» к запросу?Я пытаюсь написать функцию репозитория в приложении SpringBoot, чтобы получить первый результат сверху, где "isActive" равен TRUE, когда упорядочено по ID.Эта функция генерирует запрос, который не включает «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 имеет автоинкрементный первичный ключ?

1 Ответ

0 голосов
/ 31 декабря 2018

Попробуйте переименовать его в один из следующих вариантов:

findTop1UseCountByIsActiveOrderById(Boolean isActive)

findFirstUseCountByIsActiveOrderById(Boolean isActive)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...