Posicionar em um registro específico de uma tabela, usando Hibernate

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)