Tylko funkcje zdefiniowane w specyfikacji są obsługiwane przez wszystkich dostawców JPA i RAND
lub RANDOM
nie są. Więc nie sądzę, że można to zrobić w JPQL.
Byłoby to jednak możliwe w HQL (klauzula order by w HQL jest przekazywana do bazy danych, więc możesz użyć dowolnej funkcji):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Ale powtarzam:
- To może nie działać z inną bazą danych.
- To może nie działać z innym dostawcą JPA.