使用一个选择

时间:2018-06-07 09:51:47

标签: java hibernate jpa lazy-loading

我有许多JPA类,包含各种组合的某种类型的字段。这看起来像这样:

// entity to initialize
@Entity
class Type {
  ...

  @ManyToOne(fetch = LAZY)
  B b;
}

// containers

@Entity
class A {
  ...

  @ManyToOne(fetch = LAZY)
  Type type;
}

@Entity 
public class B {
  ...

  @ManyToOne
  C c;

  @OneToMany(fetch = LAZY)
  List<Type> possibleTypes;
}

@Entity
public class C {
  ...

  @OneToMany
  List<B> b;

  @OneToOne(fetch = LAZY)
  Type type;
}

是否可以使用一个Type初始化所有SELECT字段而无需构建手动请求或逐个初始化字段并进行多次Hibernate.initialize()次调用?像

这样的东西
List<Type> possibleProxies = new ArrayList<>();
possibleProxies.add(a1.getType());
for (B b : c1.getB()) {
  possibleProxies.addAll(b.getPossibleTypes());
}
possibleProxies.add(c1.getType());
initializeAll(possibleProxies);

其中Hibernate或其他库会检查某些对象是否已经初始化并根据JPA映射构建正确的SELECT查询

0 个答案:

没有答案