Limit 1 data jpa
Если я использую запрос по типу
@Query("... LIMIT 1")
Нужно ли мне помещать ответ в List или в Optional?
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
.. LIMIT 1
может использоваться только в нативных запросах (для которых параметр nativeQuery = true
).
Если нужно ограничить количество строк в возвращаемом результате, этого можно добиться разными способами, см. документацию JPA :: Defining Query Methods :: Limiting Query Results
- При помощи разбития на страницы, передавая параметр
Pageable
, т.е. вызывая метод с параметромPageRequest.of(0, 1)
:
List<User> findByName(String name, Pageable pageable);
- При помощи параметра
Limit
:
List<User> findByLastname(Limit limit);
- Используя ключевые слова
First
/Top
(без дополнительного численного аргумента, чтобы возвращать единственный результат), но с этими ключевыми словами нельзя будет использовать параметрLimit
:
User findFirstByOrderByLastnameAsc();
User findTopByOrderByAgeDesc();
Также для запросов, для которых размер результата ограничен и не превышает 1, результат может оборачиваться в Optional
:
Optional<User> findFirstByFirstnameOrderByLastnameAsc(String firstname);