JPA查询中的语法错误

时间:2011-02-01 11:51:53

标签: java orm jpa eclipselink jpql

当我执行以下代码时

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 个答案:

答案 0 :(得分:8)

......来自文章a ...(缺少别名)

答案 1 :(得分:1)

嗯,答案已经给出了..但是我不喜欢JPQL,你必须在实体名称之后加上一个标识符,但如果你的from子句只有一个实体,则是不可能的。大多数时候,我也忘记了那个不必要的标识符。 我希望我能写下面的上述查询;

select * from Article where slug = ?1