Spring Data: получение проблемы NonUniqueResult для запроса - PullRequest
0 голосов
/ 09 января 2020

Привет знатоки мира. Нужна некоторая помощь по выполнению запроса с SpringData.

Ожидается выполнение запроса ниже в аннотации Spring Data путем объединения с именем метода репозитория (Automated Query Construction) для получения уникального результата. По-видимому, время от времени происходит сбой, говоря, что результат не является уникальным. Вопрос здесь заключается в том, учитывается ли имя метода в построении запросов при выполнении запроса в аннотации.

 @Query("SELECT r from Revision r WHERE r.revisionBid = ?1 AND r.revisionStatusId = ?2 ORDER BY r.lastModifiedDate DESC")
 Optional<Revision> findFirst(Integer revisionBid, Integer revisionStatusId);

Заранее спасибо!

Создание запроса на ограничение до 1 результата определено здесь с FIRST & TOP, включенным в имя метода.

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories .query-methods.query-творение

1 Ответ

0 голосов
/ 09 января 2020

Я не думаю, что findFirst будет работать, когда вы используете @Query, поскольку запрос будет построен из выражения HQL в @Query, а не из-за плавного API, передающего имя метода. Из-за этого, когда запрос возвращает несколько результатов, он сгенерирует исключение, так как Optional велит обернуть один возвращаемый объект, а не коллекцию. Добавьте предложение LIMIT к HQL-запросу, и все будет хорошо.

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