求解嵌套关系表上的 N+1 休眠问题



我有一个组织表,部门表和员工表。 一个组织有多个部门,一个部门有许多员工。 在执行findByOrganizationId(组织的PK(时,我看到员工表也被查询了n次,其中n是组织的部门数。

如何避免在执行相同操作时获取员工数据? 我在这里看到一个 N+1 问题。但不确定如何在嵌套的一对多映射中避免它。

提取类型设置为"延迟"。

@OneToMany(mappedBy = "department", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Fetch(FetchMode.JOIN)
private List<Employee> employee;

原因是@Fetch(FetchMode.JOIN)fetch = FetchType.LAZY变得fetch = FetchType.EAGER时会否决它。尝试删除提取注释,它不会查询 N+1 关系。

最新更新