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