Sql 休眠QuerySyntaxException时出错:意外令牌

Sql 休眠QuerySyntaxException时出错:意外令牌,sql,hibernate,hql,jpql,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(S

我看不出错误在哪里

这是一个问题:

@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();
我做错了什么?谢谢

JPQL
中的“上没有
”,但是您可以执行隐式连接并使用
WHERE
子句

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

正如您在堆栈跟踪中看到的,问题在于
ON
关键字

它是一个SQL关键字,在JPQL中无法识别,如注释中所述,您应该使用
join
连接对象引用

您的查询应该是这样的:

query = "select e from Sustitutos e join e.personas p WHERE p.codUnidad = :codigo")

请向我们展示整个堆栈跟踪?您必须使用对象引用进行连接。HQL与SQL不同。如果您需要更多帮助,请查看对象
sustituos
Personas
query = "select e from Sustitutos e join e.personas p WHERE p.codUnidad = :codigo")