Problema no mecanismo de paginação do hibernate

2 respostas
D

olá pessoal, para fazer paginação em um projeto que uso o hibernate, eu utilizo os métodos setFirstResult e setMaxResults. Ambos aceitam um int de parâmetro, que indica a tupla de início e a quantidade de tuplas retornada, respectivamente.

O problema é o seguinte:

Suponha que exista uma tabela com um número de tuplas igual a 2 vezes o máximo armazenado em um int (já vi casos de tabelas com mais de 10 milhões de tuplas).
Suponha que sua aplicação mostre somente 20 tuplas por página.
Como fazer para mostrar, por exemplo, as últimas 20 tuplas? Não tem como porque você só pode usar int no parâmetro das duas funções.

Alguém sabe como contornar esse problema, que eu acredito ser da especificação da API?

2 Respostas

fontoura

Pra acontecer o que vc está dizendo uma tabela deve ter mais de 2.147.483.647, até você colocar esta quantidade de registros o problema já foi resolvido.

Mas fora a brincadeira, você pode criar uma classe que herde da referida classe no hibernate e reescrever os métodos necessários, neste caso usando SQL ou qqQL

Acho que isso funcionaria.

D

nesse caso, o que é melhor, reescrever os métodos do hibernate ou fazer um createSQLQuery e montar a sql com limit e offset?

Criado 13 de agosto de 2009
Ultima resposta 13 de ago. de 2009
Respostas 2
Participantes 2