Случайные избранные строки через JPA

В Mysql,

SELECT id FROM table ORDER BY RANDOM() LIMIT 5

этот sql может выбрать 5 случайных строк. Как сделать это через Запрос JPA (Будьте в спящем режиме как поставщик, база данных Mysql)?

Спасибо.

11
задан Pascal Thivent 17 March 2010 в 01:02
поделиться

2 ответа

Только функции, определенные в спецификации, гарантированно поддерживаются всеми провайдерами 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);

Но, повторяю:

  1. Это может не работать с другой базой данных.
  2. Это может не работать с другим провайдером JPA.
11
ответ дан 3 December 2019 в 10:03
поделиться

Попробуйте заранее вычислить случайное значение и составьте свой JPQL / HQL / собственный запрос с предварительно вычисленным случайным значением.

-1
ответ дан 3 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: