Все функции JPA гарантированно поддерживают только функции, определенные в спецификации, а RAND
или RANDOM
- нет. Поэтому я не думаю, что вы можете сделать это в JPQL.
Однако это возможно в HQL (предложение order by в HQL передается в базу данных, поэтому вы можете использовать любую функцию):
String query = "SELECT o.id FROM Order o ORDER BY random()";
Query q = em.createQuery(query);
q.setMaxResults(5);
Но, повторюсь:
- Это может не работать с другой базой данных.
- Это может не работать с другим провайдером JPA.