I'm working on a Spring project where I have Tasks (id, name) and Assignments (task_id, name, ...). When I get the tasks I also get assigned task, but I was not able to implement a pagination system.
public List<Tasks> getAllTasks() {
       List<Tasks> task = (List<Tasks>) taskRepository.findAll();
       return task;
   }
That's my current code. I want to display 10 items in each paginated side.
I tried something like that:
   public Page<Tasks> getAllTasks(Long page, Long size){
       List<Tasks> tsk = (List<Tasks>) taskRepository.findAll();
     
       int start =  new PageRequest(page, size).getOffset();
       int end = (start + new PageRequest(page, size).getPageSize()) > tsk.size() ? tsk.size() : (start + new PageRequest(page, size).getPageSize());
       return new PageImpl<Tasks>(tsk.subList(start, end), new PageRequest(page, size), tsk.size());
   }
but it's not working.
My current JSON response is as follows:
{
   id: 1,
   name: First Task
   assignments: [ 
        {
          id: 1,
          assignment_name: firstassignment
        },
        {
          id: 2,
          assignment_name: secondassignment
        }]
}
I also read that it doesn't need to be a List. I'm open for any ideas.
You can create and send pageable as a parameter in findAll to get the data
public Page<Tasks> getAllTasks(int page, int size){
    Pageable pageable = PageRequest.of(page, size);
    return taskRepository.findAll(pageable);
}
A good article about Pagination in Spring Data JPA here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With