我不知道错误在哪里。
这是查询:
@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]
我做错了什么?感谢
答案 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