Buscar registro aleatório com criteria

6 respostas
robsonsm

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?

6 Respostas

romarcio

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?

robsonsm

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

romarcio

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

robsonsm

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

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).

romarcio

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.

R

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  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.
Criado 22 de dezembro de 2012
Ultima resposta 22 de dez. de 2012
Respostas 6
Participantes 3