Child的@OneToMany上的FetchType.LAZY和Child的@ManyToOne上的FetchType.EAGER

时间:2015-01-12 17:33:21

标签: java architecture annotations mapping persistence

我有以下型号:

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对象上使用FetchType.EAGER吗? 将儿童FetchType设置为FetchType.LAZY会产生什么影响?

1 个答案:

答案 0 :(得分:1)

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

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