首页 > 解决方案 > 如何在jpa中加入ON?( Spring Data Jpa 1.4 )

问题描述

我有这个查询,我在 SQL 中尝试过,它运行得很好

@Query("SELECT new es.abacor.elser.commons.empleado.EmpleadoList("+ 
        "empleado.id,persona.nombre,persona.apellido1,persona.apellido2,persona.dni,persona.email)" + 
        " FROM rrhh.empleado as empleado" + 
        " INNER JOIN commons.persona AS persona ON empleado.persona_comun = persona.id" + 
        " WHERE" + 
        " empleado.persona_comun is not null" + 
        " and empleado.borrador = false" + 
        " and empleado.deleted is null" + 
        " and empleado.fecha_fin_contrato is null" + 
        " order by persona.nombre,persona.apellido1,persona.apellido2 asc")
public List<EmpleadoList> allEmpleadosList();

但是在我的项目中执行时出现以下错误

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ON near line 1, column 217 [SELECT new es.abacor.elser.commons.empleado.EmpleadoList(empleado.id,persona.nombre,persona.apellido1,persona.apellido2,persona.dni,persona.email) FROM rrhh.empleado as empleado INNER JOIN commons.persona AS persona ON empleado.persona_comun = persona.id WHERE empleado.persona_comun is not null and empleado.borrador = false and empleado.deleted is null and empleado.fecha_fin_contrato is null order by persona.nombre,persona.apellido1,persona.apellido2 asc]

有人知道我做错了什么,我不知道该怎么办了。

标签: spring-data-jpa

解决方案


JPA 不适用于表,它适用于对象。如果要使用本机查询,则必须添加nativeQuery=true到定义中:

@Query(nativeQuery=true, <SQL-Statement>)

否则,ON将从您的实体中的注释生成子句


推荐阅读