Primeiros n registros de uma tabela no Hibernate

4 respostas
H

Pessoal, tem como fazer uma consulta no hibernate que me traga os primeiros n registros de uma tabela? Levando em consideração que o meu campo id pode conter “lacunas” depois de uma exclusão em um registro.
Estou tentando fazer uma página que me retorne os primeiros 20 registros de uma tabela, clicando em “próximo”, ela me retornará os próximos 20 registros(de 21 a 40) e assim sucessivamente. Dá para fazer isso trazendo todos os registros e dividindo-os em grupos de 20, mas vai demorar muito para ele carregar a primeira vez…

Alguém tem uma sugestão?

Obrigado,
Herlen

4 Respostas

mister_m

Utilize os métodos setFirstResult(int) e setMaxResults(int) no seu Criteria/Query.

raeffray

Pelo que vivi e como respondi num outro forum, vc poderá utilizar session.createfilter, mas esse campo so recebe collection de uma classe que seja persistente no sistema. depois disso, vc utiliza os metodos setFirstResult(int) e setMaxResults(int).

H

Blz. E para saber a quantidade total de registros retornados pela Query que me retornará os registros. Pois quando o usuário clicar no botão “Último”, ele deverá ir para o último grupo de registros. Terei que executar uma vez essa Query sem passar o setFirstResult(int) e setMaxResults(int)? Já que o valor de Query.list().size() me retorna a quantidade de registros já levando em consideração o setFirstResult(int) e setMaxResults(int).

Obrigado,
Herlen

mister_m

O único jeito portável de fazer isso é fazer um select count(*) utilizando os mesmos critérios da pesquisa original e depois calcular qual o número da sua última página.

Criado 5 de abril de 2005
Ultima resposta 5 de abr. de 2005
Respostas 4
Participantes 3