Primeiros n registros de uma tabela no Hibernate

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

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

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).

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

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.