Como faço, no Hibernate, para:
- Me posicionar no primeiro registro de uma tabela.
- Me posicionar no último registro de uma tabela.
- Me posicionar no registro posterior ao registro corrente de uma tabela.
- Me posicionar no registro anterior ao registro corrente de uma tabela.
Muito obrigado.
usando Criteria API você pode fazer:
primeiro registro
criteria
.addOrder(Order.asc(‘propriedadeAOrdernar’))
.setMaxResult(1)
ultimo registro
criteria
.addOrder(Order.desc(‘propriedadeAOrdernar’))
.setMaxResult(1)
agora, para registro posterior e anterior não existe uma maneira direta, pois você não trabalha com registro e sim com objeto que neste caso é uma collection
para navegar na collection você deve navegar com o indice ou um iterator, assim, você fazer um findAll qualquer e pegando o item atual você usa o indice +1 ou indice -1 pra isto.
se a colection não atender você terá que fazer uma pesquisa adicionando na clausula uma restriction para pegar a proxima ou anterior
buscar próximo
criteria
.add(Restrictions.gt(‘propriedadeAOrdernar’, valorReferenciaAnterior)
.addOrder(Order.desc(‘propriedadeAOrdernar’))
.setMaxResult(1)
buscar anterior
criteria
.add(Restrictions.lt(‘propriedadeAOrdernar’, valorReferenciaAnterior))
.addOrder(Order.desc(‘propriedadeAOrdernar’))
.setMaxResult(1)