Как запросить данные из коробки с помощью <JPY> данных JPA как сортировкой, так и страницей?
Я пытаюсь Spring данные JPA в моем проекте. Я хочу знать, есть ли готовый API для запроса данных как с помощью Sort
, так и Pageable
. Конечно, я знаю, что могу сам написать этот метод, я просто хочу знать, есть ли готовый. Мой DAO расширяет JpaRepository
, и я обнаружил, что есть следующие методы, которые я могу вызвать:
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
Но нет такого метода, как findAll(Sort sort, Pageable pageable)
, поэтому мне интересно.
Ответы
Ответ 1
Есть два способа добиться этого:
final PageRequest page1 = new PageRequest(
0, 20, Direction.ASC, "lastName", "salary"
);
final PageRequest page2 = new PageRequest(
0, 20, new Sort(
new Order(Direction.ASC, "lastName"),
new Order(Direction.DESC, "salary")
)
);
dao.findAll(page1);
Как вы можете видеть, вторая форма более гибкая, так как позволяет определять различное направление для каждого свойства (lastName ASC, salary DESC
).
Ответ 2
Pageable имеет возможность указывать также сортировку. Из java doc
PageRequest(int page, int size, Sort.Direction direction, String... properties)
Создает новый параметр PageRequest с применяемыми параметрами сортировки.