Data
Pagination & Sorting
Using Pagination
To enable pagination in a repository method, simply:
- Add a Pagination parameter to the method.
- Return a Page<T>.
Quartz will detect this pattern and apply paging semantics accordingly.
Page<User> findByActiveTrue(Pagination pagination);
You can construct pagination using PageRequest:
Pagination pagination = PageRequest.of(0, 10); // page 0, size 10
To include sorting:
Pagination pagination = PageRequest.of(0, 10, Sort.by("createdAt").descending());
Return Type: Page<T>
The Page<T> interface wraps paginated results and provides useful metadata:
Page<User> page = userRepository.findByActiveTrue(pagination);
List<User> users = page.content();
int currentPage = page.page();
int pageSize = page.size();
long totalItems = page.totalElements();
int totalPages = page.totalPages();
You can also chain operations on pages:
Page<UserDTO> dtos = page.map(user -> new UserDTO(user.id(), user.name()));
Page<User> filtered = page.filter(user -> user.isVerified());
Creating Pagination
You can create pagination instances with:
Pagination.of(int page, int size)
Pagination.of(int page, int size, Sort sort)
Pagination.ofSize(int size) // default to page 0
Pagination.unpaged() // disables pagination
Pagination.unpaged() returns all records (internally uses size = Integer.MAX_VALUE).
Sorting
Sorting is handled via the Sort class:
Sort.by("name") // ascending by default
Sort.by("createdAt").descending() // descending
Sort.unsorted() // no ordering
The Sort object can be passed directly into PageRequest:
Pagination p = PageRequest.of(1, 20, Sort.by("score").descending());
Example
Page<Order> findByCustomerId(Long customerId, Pagination pagination);
Called with:
Pagination p = PageRequest.of(0, 5, Sort.by("createdAt").descending());
Page<Order> page = repository.findByCustomerId(123L, p);
Unpaged Behavior
If a method is called with Pagination.unpaged(), Quartz will return all matching records with no limit applied.
List<User> users = userRepository.findByActiveTrue(Pagination.unpaged()).content();