Spring数据JPA:QuerySyntaxException:部门未映射

时间:2018-12-06 12:20:22

标签: spring-data-jpa jpql

我正在使用spring数据jpa。我使用@query注释编写查询并尝试获取表中的所有列,但在实现时遇到错误,即部门表未映射。

部门资料库

 @Repository
    public interface DepartmentsRepository extends JpaRepository<Department, Long> 
    {
        @Query(value = "select d from department d")
        public List<Department> findColumns();
    }

部门课程

@Entity
@Table(name="department")
public class Department 
{
@Id
@Column(name="ndept_id")
public int ndept_id;

@Column(name="sdept_name")
public String sdept_name;

@Column(name="ninst_id")
public int ninst_id;

@Column(name="bis_locked")
public boolean bis_locked;

@Column(name="sclient_dept_id")
public String sclient_dept_id;

@Column(name="nsurvey_method_id")
public  int nsurvey_method_id;

@Column(name="bis_jointuse")
public boolean bis_jointuse;

@Column(name="ntemp_dept_id")
public int ntemp_dept_id;

@Column(name="balternate_jointuse_percentage")
public boolean balternate_jointuse_percentage;

@Column(name="ndiv_id")
public Integer ndiv_id;

2 个答案:

答案 0 :(得分:0)

JPQL针对实体的查询,它不会直接影响数据库。所以使用模型名称代替表名称

@Repository
    public interface DepartmentsRepository extends JpaRepository<Department, Integer> 
    {
        @Query("select d from Department d")
        public List<Department> findColumns();
    }

答案 1 :(得分:0)

JPA不处理表名称,因此,如果要使用JPA查询语言(JPQL)编写查询,请使用完全分类的(package_name.class_name)实体名称而不是表名称。

因此您的查询将如下所示

@Query(value = "select d from package_name.Department d")
public List<Department> findColumns();

或者您也可以使用@QuerynativeQuery=true批注中运行纯SQL查询,因此您的代码将如下所示:

@Query(value = "select d from department d", nativeQuery=true)
public List<Department> findColumns();