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.