错误hibernate QuerySyntaxException:意外令牌

时间:2015-07-28 08:09:09

标签: sql hibernate hql jpql

我不知道错误在哪里。

这是查询:

@NamedQuery(name = Sustitutos.Q_BUSCAR_SUSTITUTOS_OFICINA,
query = "select e from Sustitutos e inner join Personas p ON p.codPersona = e.sustituido WHERE p.codUnidad = :codigo"),

我以这种方式称呼它:

        Query q = this.em.createNamedQuery(Sustitutos.Q_BUSCAR_SUSTITUTOS_ZONA);
        q.setParameter("codigo", codUnidadSup);
        List<Sustitutos> resultado = q.getResultList();

堆栈跟踪:

Error in named query: Sustitutos.buscarSustitutosOficina
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: ON near line 
1, column 83 [select e from com.bs.proteo.channel.arc.entity.Sustitutos e 
inner join Personas p ON p.codPersona = e.sustituido WHERE p.codUnidad = 
:codigo]

我做错了什么?感谢

2 个答案:

答案 0 :(得分:1)

"ON"中没有JPQL,但您可以执行隐式连接并使用WHERE子句。

 @NamedQuery(name = Sustitutos.Q_BUSCAR_SUSTITUTOS_OFICINA,
    query = "select e from Sustitutos e  join  e.personas p WHERE p.codUnidad = :codigo"),

答案 1 :(得分:1)

正如您在Stack跟踪中看到的那样,问题出在ON关键字上。

它是 SQL 关键字,并且在 JPQL 中无法识别,并且如评论中所述,您应该使用{{加入对象引用1}}。

这是您的查询的方式:

JOIN