JPA NamedNativeQuery вызывает код ошибки исключения SQL 1064

#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 .