在Spring JPA中编写自定义查询

时间:2015-06-18 03:17:13

标签: java jpa spring-data

我有两个实体Employee和Department,如下所示:

var arr = [Any]()

for type in types {
    switch type {
    case .Int:
        arr += [4]

    case .String:
        arr += ["hi"]
    }
}

print(arr)

每个员工都有一个id和一个deptId(指的是部门ID)。但是,员工和部门之间没有多对一的关系。

我还有一个扩展JpaRepository的EmployeeRepository:

@Entity
@Table(name="employee")
public class EmployeeDAO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(unique=true, nullable=false)
    private Long id;

    @Column(name="dept_id")
    private Long deptId;
    ...
}

@Entity
@Table(name="department")
public class DepartmentDAO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(unique=true, nullable=false)
    private Long id;

    @Column(name="dept_name")
    private String deptName;
    ...
}

我希望findByDeptId()方法做的是,在给定部门ID的情况下,查找该部门中的所有员工以及部门中deptName为&#34;默认&#34;。< / p>

我使用@Repository public interface EmployeeRepository extends JpaRepository<EmployeeDAO, Long> { List<EmployeeDAO> findByDeptId(@Param("deptId") Long deptId); } 编写了一个自定义查询,如下所示,但它引发了错误。我是JPA的新手,因此以下查询可能完全错误。

@Query

这是我得到的错误:

@Query("select emp from EmployeeDAO emp where emp.deptId in ((select dept.id from DepartmentDAO dept where dept.deptName='default'),:deptId))
List<EmployeeDAO> findByDeptId(@Param("deptId") Long deptId);

查询应该如何?

感谢。

0 个答案:

没有答案