Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélection aléatoire de lignes via JPA

Seules les fonctions définies dans la spécification sont garanties d'être prises en charge par tous les fournisseurs JPA et RAND ou RANDOM ne sont pas. Je ne pense donc pas que vous puissiez le faire dans JPQL.

Cependant, cela serait possible dans HQL (la clause order by dans HQL est transmise à la base de données, vous pouvez donc utiliser n'importe quelle fonction) :

String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);

Mais, je répète :

  1. Cela peut ne pas fonctionner avec une autre base de données.
  2. Cela peut ne pas fonctionner avec un autre fournisseur JPA.