Gavin King (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *updated* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiNTdhOTU2NzQx...
) / New Feature (
https://hibernate.atlassian.net/browse/HHH-16929?atlOrigin=eyJpIjoiNTdhOT...
) HHH-16929 (
https://hibernate.atlassian.net/browse/HHH-16929?atlOrigin=eyJpIjoiNTdhOT...
) introduce Pager API (
https://hibernate.atlassian.net/browse/HHH-16929?atlOrigin=eyJpIjoiNTdhOT...
)
Change By: 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:
{code:java} 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();
}{code}
Or as follows:
{code:java} session.createSelectionQuery("from Book where title like :title",
Book.class)
.setParameter("title", titlePattern)
.getResultPager(Page.first(pageSize))
.forEachRemainingPage(books -> {
...
session.clear();
});{code}
Or even, more practically for most programs, something like this:
{ noformat code:java }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 );
});{ noformat code }
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 )