Obter total de resultados ao fazer paginação com Hibernate + JPA

8 respostas
FkJ

Para realizar tal tarefa tive que fazer um select count(*). Alguém conhece outra forma?

Obrigado,
Felipe

8 Respostas

I

Faz assim, por exemplo :

Query query = em.createQuery(“SELECT p FROM MyClass p”);

int qte_row = query.getResultList().size();

query.setFirstResult(0);

query.setMaxResults(10);
_fs

Há alguns jeitos. Aqui mais um:

Criteria crit = session.createCriteria(Product.class);
crit.setProjection(Projections.rowCount());
List results = crit.list();
FkJ

Italivio:
Faz assim, por exemplo :

Query query = em.createQuery(“SELECT p FROM MyClass p”);

int qte_row = query.getResultList().size();

query.setFirstResult(0);

query.setMaxResults(10);


Essa seria a melhor alternativa, mas quando faço getResultList().size() é feito fetch completo da lista

LIPE:
Há alguns jeitos. Aqui mais um:

Criteria crit = session.createCriteria(Product.class); crit.setProjection(Projections.rowCount()); List results = crit.list();


Cheguei a esbarrar com essa forma quando estava pesquisando, mas no meu caso acho que ela não serve por dois motivos:

  • Estou usando JPA
  • A query pode ter cláusula where
Paulo_Silveira

No hibernate teriam duas formas: projections no criteria ou filters na query.

Na JPA, ate onde eu sei, nao tem como sem usar o count. JPA 2.0 vem para suprir essas pequenas necessidades.

erickmelo

Pessoal,

Esbarrei no mesmo problema! Alguma solução? ou será que vou ter que fazer algo como um SELECT COUNT ?

[]s

FkJ

Utilize criteria. http://www.hibernate.org/hib_docs/v3/reference/en-US/html_single/#querycriteria

erickmelo

Gostaria de uma opção sem utilizar Criteria… Usando somente a especificação JPA

FkJ

Acho que só com JPA 2 então, quando sair.

Criado 26 de setembro de 2007
Ultima resposta 5 de mar. de 2009
Respostas 8
Participantes 5