gpt4 book ai didi

java - 无法在 spring data jpa 中使用内部联接获取子实体

转载 作者:行者123 更新时间:2023-12-02 11:23:53 25 4
gpt4 key购买 nike

您好,我正在尝试获取一个父类部门,其中我也有一个员工条款。

在 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,无法初始化代理 - 无 session

我已在 OneToMany 映射上将 fetchType 指定为惰性。

等效的sql查询如下。

select t1.*, t2.* from Department t1, Employee t2 where t2.dept_Id = 423 and t1.dept_name='HR' and t1.is_active != 'N'

最佳答案

您可以尝试使用 fetch join 来急切地获取子实体。接下来应该查看查询:

  @Query("select t1 from Department t1 inner join fetch t1.employee t2 where t1.deptHead = :deptHead and t1.departmentId = :deptId and t2.isActive != 'N')

关于java - 无法在 spring data jpa 中使用内部联接获取子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49731114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com