在对象图中,使用预先加载然后延迟加载来获取N级对象

时间:2017-04-27 11:23:38

标签: java hibernate jpa

假设我们有一个如下对象图:

Class A {
  B b;
}
Class B {
  C c;
}
Class C {
  D d;
}
Class D {}

现在,当我获取对象A时,我想使用预先加载来获取B和C,使用延迟加载来获取D. 如何在JPA或Hibernate中完成这项工作?

2 个答案:

答案 0 :(得分:2)

假设它们之间存在连接,您可以轻松地在BC中使用FetchType.EAGER,在D中使用FetchType.LAZY。

这种方式也可以通过@NamedEntityGraph实现。

答案 1 :(得分:1)

在A中为对象B使用eager,在B中为对象C使用eager,在C中为对象D使用lazy

class A {
  //eager
  B b;
}
class B {
  //eager
  C c;
}
class C {
  //lazy
  D d;
}
class D {}