我正在使用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;
答案 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();
或者您也可以使用@Query
在nativeQuery=true
批注中运行纯SQL查询,因此您的代码将如下所示:
@Query(value = "select d from department d", nativeQuery=true)
public List<Department> findColumns();