#mysql #jpa #criteria
#mysql #jpa #критерии
Вопрос:
Может кто-нибудь объяснить, почему я получаю следующий код ошибки в NamedNativeQuery. Синтаксис для меня выглядит абсолютно правильным. Я использую MySQL. Я попытался указать позицию как ?1 и то же самое.
@NamedNativeQuery(name = "Category.findRandomByLimit",
query = "SELECT * FROM Category ORDER BY RAND() LIMIT ?")
Должен ли я заглянуть в API критериев для order by? Я бы подумал, что вместо этого будет работать собственный запрос. Я также попытался удалить LIMIT и параметр и использовать setMaxResults, но я все равно получаю код ошибки.
public List<Category> findRandom(int limit) {
return getEntityManager()
.createNativeQuery("Category.findRandomByLimit")
.setParameter(1, limit)
.getResultList();
}
Комментарии:
1. и когда вы выполняете тот же самый запрос в MySQL напрямую? Также опубликуйте исключение трассировку стека
2. Хорошо, в следующий раз я
Ответ №1:
Вы вызываете createNativeQuery
, когда должны использовать createNamedQuery
.