Galera…to ficando louco já…não tenho mais cérebro para pensar em paginação…uma luz por favor:
Achei isto na net:
package com.system;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.ScrollableResults;
/**
* This class provides pagination for displaying results from a large result set
* over a number of pages (i.e. with a given number of results per page).
*
* Taken from http://blog.hibernate.org/cgi-bin/blosxom.cgi/2004/08/14#fn.html.
*
* @author Gavin King
* @author Eric Broyles
*/
public class Page {
private List results;
private int pageSize;
private int page;
private ScrollableResults scrollableResults;
private int totalResults = 0;
/**
* Construct a new Page. Page numbers are zero-based, so the first page is
* page 0.
*
* @param query
* the Hibernate Query
* @param page
* the page number (zero-based)
* @param pageSize
* the number of results to display on the page
*/
public Page(Query query, int page, int pageSize) {
this.page = page;
this.pageSize = pageSize;
try {
scrollableResults = query.scroll();
/*
* We set the max results to one more than the specfied pageSize to
* determine if any more results exist (i.e. if there is a next page
* to display). The result set is trimmed down to just the pageSize
* before being displayed later (in getList()).
*/
results = query.setFirstResult(page * pageSize).setMaxResults(
pageSize + 1).list();
} catch (HibernateException e) {
}
}
public boolean isFirstPage() {
return page == 0;
}
public boolean isLastPage() {
return page >= getLastPageNumber();
}
public boolean hasNextPage() {
return results.size() > pageSize;
}
public boolean hasPreviousPage() {
return page > 0;
}
public int getLastPageNumber() {
/*
* We use the Math.floor() method because page numbers are zero-based
* (i.e. the first page is page 0).
*/
double totalResults = new Integer(getTotalResults()).doubleValue();
return new Double(Math.floor(totalResults / pageSize)).intValue();
}
public List getList() {
/*
* Since we retrieved one more than the specified pageSize when the
* class was constructed, we now trim it down to the pageSize if a next
* page exists.
*/
return hasNextPage() ? results.subList(0, pageSize) : results;
}
public int getTotalResults() {
try {
getScrollableResults().last();
totalResults = getScrollableResults().getRowNumber();
} catch (HibernateException e) {
}
return totalResults;
}
public int getFirstResultNumber() {
return page * pageSize + 1;
}
public int getLastResultNumber() {
int fullPage = getFirstResultNumber() + pageSize - 1;
return getTotalResults() < fullPage ? getTotalResults() : fullPage;
}
public int getNextPageNumber() {
return page + 1;
}
public int getPreviousPageNumber() {
return page - 1;
}
protected ScrollableResults getScrollableResults() {
return scrollableResults;
}
}
Como faço para usar isto num .jsp ???
Estou usando webwork+hibernate
Qualquer exemplo já ajuda…usando List simples…qualquer coisa…