我有两个实体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);
查询应该如何?
感谢。