How to query data out of the box using Spring data JPA by both Sort and Pageable?
I am trying Spring data JPA in my project. I want to know if there is an out-of-the-box API to query data, by both Sort
and Pageable
. Of course, I know I can write that method myself, I just want to know if there is an out-of-the-box one. My DAO extends JpaRepository
, and I found there are the following methods I can invoke:
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
But there is no such method as findAll(Sort sort, Pageable pageable)
, so I am curious.
There are two ways to achieve this:
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);
As you can see the second form is more flexible as it allows to define different direction for every property (lastName ASC, salary DESC
).
Pageable has an option to specify sort as well. From the java doc
PageRequest(int page, int size, Sort.Direction direction, String... properties)
Creates a new PageRequest with sort parameters applied.