Gavin King (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYzBlNzg1M2I5...
) / New Feature (
https://hibernate.atlassian.net/browse/HHH-16929?atlOrigin=eyJpIjoiYzBlNz...
) HHH-16929 (
https://hibernate.atlassian.net/browse/HHH-16929?atlOrigin=eyJpIjoiYzBlNz...
) introduce Pager API (
https://hibernate.atlassian.net/browse/HHH-16929?atlOrigin=eyJpIjoiYzBlNz...
)
Issue Type: New Feature Assignee: Unassigned Created: 12/Jul/2023 05:56 AM Priority: Major
Reporter: Gavin King (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
To make query result pagination slightly easier to use, introduce Pager , which may be
used as follows:
Pager<Book> bookPager =
session.createSelectionQuery( "from Book where title like :title" ,
Book.class)
.setParameter( "title" , titlePattern)
.getResultPager(Page.first(pageSize));
while (bookPager.hasResults()) {
List<Book> books = bookPager.getResultList();
...
session.clear();
bookPager.next();
}
Or as follows:
session.createSelectionQuery( "from Book where title like :title" , Book.class)
.setParameter( "title" , titlePattern)
.getResultPager(Page.first(pageSize))
.forEachRemainingPage(books -> {
...
session.clear();
});
Or even, more practically for most programs, something like this:
scope.inSession(s -> {
Page page = Page.first(10);
boolean hasMore;
do {
Pager<Book> pager = s.createSelectionQuery("from Book",
Book.class)
.getResultPager(Page.first(15));
List<Book> books = pager.getResultList();
hasMore = pager.hasResultsOnNextPage();
page = page.next();
} while ( hasMore );
});
Here we do not need to keep a Pager open between requests.
Still need to add Page.getTotalPages() delegating to a new method Query.getResultCount().
(
https://hibernate.atlassian.net/browse/HHH-16929#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16929#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100231- sha1:2d13be9 )