2010-06-16 9 views
5

me gustaría poner en práctica la paginación en mi proyecto servlet/EJB/APP-Hibernate, pero no puedo encontrar la manera sólo una página de la consulta y saber el número de páginas que debo mostrar¿Cómo podemos calcular la ÚLTIMA página con JPA?

utilizo

setFirstResult(int first) ; 
setMaxResults(int max) ; 

y eso está funcionando bien, pero ¿cómo puedo saber cuántas páginas tendré en total?

(Hibernate es el profesional de la APP, pero yo preferiría utilizando sólo APP si es posible)

ACTUALIZACIÓN: COUNT() parece ser la mejor solución/más fácil; pero ¿cuál puede ser el costo de SELECT COUNT(*) FROM ... en comparación con executeQuery("SELECT * FROM ...).getListResult().size()?

+1

ver también esta pregunta: http://stackoverflow.com/questions/168084/is-there-a-más-efficient-way-of-making-pagination-in-hibernate-than-executing-se – serg

Respuesta

4

AFAIK, necesita (1) contar o (2) recuperar la lista completa de aciertos y realizar la paginación en la memoria. El número de páginas es el redondeo del recuento total/el tamaño de la página.

Hay varias maneras de contar, una es utilizar COUNT(*) como en

Query query=em.createQuery("SELECT COUNT 
(emp.empName) FROM Employee emp"); 

u otra Oner es utilizar una proyección

criteria.setProjection(Projections.rowCount()); 
int rowCount = (Integer) criteria.list().get(0); 

Tenga en cuenta que nunca he usado éste sin embargo, yo solo léelo en alguna parte.

había documentado algunos otros detalles acerca de la paginación en esta respuesta:

espero que ayude

Cuestiones relacionadas