FetchType.LAZY 在 Parent 的@OneToMany 上,FetchType.EAGER 在 Child 的@ManyToOne 上

FetchType.LAZY on Parent's @OneToMany and FetchType.EAGER on Child's @ManyToOne

我有以下型号:

public class Parent {

  @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "parent",
      orphanRemoval = true)
  @Fetch(FetchMode.SELECT)
  private List<Child> children = new ArrayList<Child>();

}

public class Child {

  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "parent_id")
  private Parent parent;

}

这是 FetchType 的正确用法吗? 我可以在 Parent 上使用 FetchType.LAZY,但在 Child object 上使用 FetchType.EAGER 吗? 将 Child 的 FetchType 也设置为 FetchType.LAZY 有什么影响?

没关系。您可以在关系的每个部分设置不同的提取类型。

如果您在子实体中设置 FetchType.LAZY,当您获得子实体时,您将不会直接获得父实体的实例,除非您在托管上下文中导航关系。