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