Reputation: 147
I have onetomany unidrirectional parent - child.
I am fetching the child list using parent.
How do i apply pagination on the list of child records?
For Ex: Parent P has Child C1,C2,C3..C20
i do findByParentCode(Code) returns the Parent object with Child list in it. But i need to get the paginated list of the child.
Please Help
Upvotes: 0
Views: 3001
Reputation: 147
I have done pagination for the child list (which does not know its parent)
Query query = getEntityManager().createQuery(
"select s.chilidList from Parent s where s.ParentCode = :ParentCode");
query.setParameter("ParentCode", ParentCode);
query.setFirstResult(pageIndex);
query.setMaxResults(pageSize);
Upvotes: 0
Reputation: 330
You can query your child object's table using the parent code field in the child object i.e the foreign key to the Parent table something like:
Page<Child> findByParentId(Long parentId, Pageable pageRequest);
You can paginate the query results by using Spring Data JPA pagination support. Create an instance of PageRequest class with the pageNumber, size and sorting if need be, and iterate over the pages as shown below
Page<Child> page = null;
do {
Pageable nextPageable = page != null ? page.nextPageable() : new PageRequest(0, pageSize);
page = childService.findByParentId(parentId, nextPageable);
processPage(page);
} while (page.hasNext());
Upvotes: 2