您好我正在尝试获取父类部门,我也有一个员工条款。
在Employee表中,我有一个指标is_active。 我需要找一个有多个员工的部门,其中is_active不是N'
我尝试使用存储库。
@Query("select t1 from Department t1 inner join t1.employee t2 where t1.deptHead = :deptHead and t1.departmentId = :deptId and t2.isActive != 'N')
public Department fetchDepartmentByActiveEmployees(@Param(deptId) Long deptId, @Param(deptHead) String deptHead);
上面的查询给了我父数据,但是当试图遍历子实体时,它在Employee上给我LazyInitializationException,无法初始化代理 - 没有会话
我在我的OneToMany映射上将fetchType指定为lazy。
等效的sql查询如下所示。
select t1.*, t2.* from Department t1, Employee t2 where t2.dept_Id = 423 and t1.dept_name='HR' and t1.is_active != 'N'
答案 0 :(得分:1)
您可以尝试获取联接以急切地获取子实体。 查询应该是下一个:
@Query("select t1 from Department t1 inner join fetch t1.employee t2 where t1.deptHead = :deptHead and t1.departmentId = :deptId and t2.isActive != 'N')