Как запросить данные из коробки с помощью <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 с применяемыми параметрами сортировки.