2016-04-25 3 views
-1

Я реализовал метод, который позволяет мне сгенерировать тест (весь вопрос) автоматически, но проблема в следующем: метод, очевидно, возьмет количество случайных вопросов, но также и тему генерируемых вопросов (у меня есть entié и, следовательно, таблица). Я не знаю, где я буду помещать категорию в запрос. и, во-вторых, RANDOM() не обрабатывается JPQL, что я могу сделать?methode JEE реализация

schema of the DataBase

public List<Question> prepareRandomTest(int number_of_questions, Categorie  categorie){ 
     String jpql = "SELECT q FROM Question q ORDER BY RANDOM() LIMIT "+number_of_questions ; 
    Query query = entityManager.createQuery(jpql); 
     return query.getResultList(); 
    } 
+0

'entityManager.persist (Question.class);' ?! –

+0

@ CássioMazzochiMolin Я исправлю его – Daly

ответ

1

Вы пытаетесь использовать Java Persistence Query Language здесь, поэтому ваше решение не принимать во внимание RANDOM. Используйте собственный запрос и создайте Query из собственной строки sql, собственный запрос - это просто простой sql-оператор без ссылки на объект Entity (например, Question). Таким образом, обычные слова sql, такие как RANDOM и т. Д., Легко читаются.

Native Query Tutorial

Вместо использования

String jpql = "SELECT q FROM Question q ORDER BY RANDOM() LIMIT "+number_of_questions ; 

использование:

"SELECT * FROM question where category="+category+" ORDER BY RANDOM() LIMIT "+number_of_questions; 

Дополнительные рекомендации: Получить строку категории от "Enum" в вашем коде соответствие строкового значения в базе данных гори столбец.

+0

в моей программе Я использую JPQL, поэтому он не вызывает проблем, если я использую простые SQL-запросы? – Daly

+0

Независимо от того, используете ли вы строку JPQL или Sql Query String, hibernate будет самостоятельно вести переговоры для создания объекта запроса (Query query = entityManager.createQuery (jpql или sql);), поэтому вам не нужно беспокоиться о том, кода, это обязательная аббревиатура аббревиатуры. –

+0

это правильно? открытый список prepareRandomTest (int number_of_questions, Категория категоризации) { \t \t Строка sql = "SELECT * FROM question where category =" + category "+ ORDER BY RANDOM() LIMIT" + number_of_questions; \t \t SQLQuery query = session.createSQLQuery (sql); \t \t \t \t Список Результаты = (Список ) query.list(); \t \t результат возврата; \t \t} – Daly

Смежные вопросы