我有一个组织表,部门表和员工表。 一个组织有多个部门,一个部门有许多员工。 在执行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 关系。