Как я могу получить первую строку из операции SELECT с использованием JPQL? - PullRequest
1 голос
/ 12 июня 2019

У меня есть база данных с данными о некоторых тестах, я хочу прилично упорядочить их, используя их атрибут DATE, и взять только первый из них.Я имею в виду, эквивалентный TOP 1 SQL в JPQL.

Спасибо за вашу помощь!

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Обычно вы устанавливаете это на объекте Query до запуска извлечения:

entityManager.createQuery("...")
       .setMaxResults(1)
       .getResultList();

С использованием синтаксиса Spring Data Jpa вы будете использовать что-то вроде:

Optional<Test> findFirstByOrderByDateDesc();

Или используя Pageable:

Page<Test> test = repository.findAll(
    PageRequest.of(0, 1, Sort.by(Sort.Direction.DESC, "date")));
0 голосов
/ 13 июня 2019

Чаще всего встречается

Foo findFirstByOrderByDateDESC();

Использование @ Query с nativeQuery = true

@Query(value="SELECT 1 * FROM "TableName" ORDER BY "DATE in db" DESC LIMIT 1", nativeQuery = true)
Foo findFirstByOrderByDateDESC(Long id); // name can be random
0 голосов
/ 12 июня 2019

Весной jpa вы можете сделать что-то вроде этого

Foo findTopByOrderByDateDesc(); //This will return 1st item

List<Foo> findTop10ByOrderByDateDesc(); //This will return top 10 item

Для справки Spring Jpa Doc

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