Solo las funciones definidas en la especificación están garantizadas para ser compatibles con todos los proveedores de JPA y RAND
o RANDOM
no lo son Así que no creo que puedas hacerlo en JPQL.
Sin embargo, sería posible en HQL (la cláusula order by en HQL se pasa a la base de datos, por lo que puede usar cualquier función):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Pero, repito:
- Es posible que esto no funcione con otra base de datos.
- Es posible que esto no funcione con otro proveedor de JPA.