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:
- Isso pode não funcionar com outro banco de dados.
- Isso pode não funcionar com outro provedor JPA.