Buscar registro aleatório com criteria

Eu tenho uma consulta utilizando criteria do hibernate que retorna apenas um registro, porém eu gostaria que o registro retornado fosse sempre aleatório. Toda vez que eu chama-se esta consulta ela retornaria um registro diferente. Alguém sabe me dizer como eu faria isso utilizando criteria?

Como assim? A consulta vai retorna o registro que condiz com os critérios existentes nela. Se encontrou apenas 1 registro, como ela vai retornar registros aleatoriamente?

O único critério da consulta é trazer apenas um registro qualquer.

Você fez uma consulta tipo “select * from” então? Que retorna tudo?

Você fez uma consulta tipo “select * from” então? Que retorna tudo?

[/quote]

usei o setMaxResults sem qualquer outro critério, porém o retorno é sempre o mesmo registro. Eu gostaria que ele retornasse sempre um registro aleatório (Usando criteria).

Tem como postar o método?

Na verdade na API Criteria não tem nenhum método que escolha randomicamente um elemento, teria que fazer uma lógica para isso.

Eu faria assim:

Pega o último registro do banco de dados utilizando criteria e ordenação;
Usa a classe Random do java para te retornar um número randomico entre 1 e o id desse último elemento (ex: entre 1 e 1000);
E aí vc pegava esse id e buscava o elemento no banco de dados com esse id. Se o elemento não exitisse, vc tentaria de novo, até conseguir.