Само функциите, дефинирани в спецификацията, гарантирано се поддържат от всички доставчици на JPA и RAND
или RANDOM
не са. Така че не мисля, че можете да го направите в JPQL.
Въпреки това, би било възможно в HQL (последователността по клауза в HQL се предава през базата данни, така че можете да използвате всяка функция):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Но, повтарям:
- Това може да не работи с друга база данни.
- Това може да не работи с друг доставчик на JPA.