Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Seleção aleatória de linhas via JPA


Apenas as funções definidas na especificação têm suporte garantido por todos os provedores JPA e RAND ou RANDOM não são. Então eu não acho que você pode fazer isso em JPQL.

No entanto, seria possível em HQL (a cláusula order by em HQL é passada para o banco de dados, então você pode usar qualquer função):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);

Mas, repito:
  1. Isso pode não funcionar com outro banco de dados.
  2. Isso pode não funcionar com outro provedor JPA.