Синтаксическая ошибка в запросе JPA - PullRequest
3 голосов
/ 01 февраля 2011

Когда я выполняю следующий код

return entityManager
            .createQuery("select a from Article where a.slug = ?1", Article.class)
            .setParameter(1, slug)
            .getSingleResult();

Я получаю следующее исключение

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing the query [select a from Article where a.slug = '?1'], line 1, column 22: syntax error at [where].
Internal Exception: MismatchedTokenException(77!=78)
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1328)

Я использую JPA 2 с EclipseLink 2.0.2.

Что не так с моим запросом?

Ответы [ 2 ]

8 голосов
/ 01 февраля 2011

... Из статьи а ... (отсутствует псевдоним)

1 голос
/ 01 февраля 2011

Ну, ответ уже дан .. Но что мне не нравится в JPQL, вы должны поставить идентификатор после имени сущности, но это необязательно, если в предложении from действительно есть только одна сущность.В большинстве случаев я также забываю указывать этот ненужный идентификатор.Я хотел бы написать вышеуказанный запрос, как показано ниже;

select * from Article where slug = ?1
...