Как получить случайный объект из БД? - PullRequest
1 голос
/ 02 августа 2011

Для большей динамичности я хотел бы добавить случайную часть в мое приложение. Вот что я бы сделал в других технологиях и что не работает в игре:

long id = JPA.execute("select id from Realisation r order by RANDOM() LIMIT 1");

А вот и стек:

unexpected token: LIMIT near line 1, column 55

Комментарии:

  • Либо в приложении, либо в базе данных, мне все равно.
  • Около ста «реализаций» в базе данных.
  • Все, что мне нужно, это ID, нет необходимости в полном объекте.
  • База данных MySQL за всем этим.

EDIT

После небольшого расследования вот как я это сделал:

  • Определите jpa.dialect в application.conf: jpa.dialect=org.hibernate.dialect.MySQLDialect
  • Получите полный объект вместо просто id с помощью классических утилит Model:

Realisation r = Realisation.find("order by RAND()").first();

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

После небольшого расследования вот как я это сделал.Определите jpa.dialect в application.conf:

jpa.dialect=org.hibernate.dialect.MySQLDialect

Получите полный объект вместо просто id с помощью классических утилит Model:

Realisation r = Realisation.find("order by RAND()").first();

Не лучшим образомвозможно, так как мне нужен только идентификатор, а не полный объект.Во всяком случае, у меня нет другого решения.Если у кого-то есть только удостоверение личности, я его возьму.

1 голос
/ 02 августа 2011

В JPQL нет предела "limit", вам нужно подкачки.Вместо этого вы можете использовать Query.setMaxResults, если это запрос JPQL, что не совсем ясно в посте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...