java - Hibernate 是否可以通过一次选择获取两层集合?

标签 java hibernate one-to-many hibernate-onetomany

我有三个实体:

@Entity
@Table(name="a")
class A {

  @Id
  Long id;

  @OneToMany(fetch = FetchType.EAGER)
  @JoinColumn(name = "a_id")    
  Set<B> bs;

  // ... other fields
}

@Entity
@Table(name = "b")
class B {

  @Id
  Long id;

  @OneToMany(fetch = FetchType.EAGER)
  @JoinColumn(name = "c_id")
  Set<C> cs;

  // ... other fields
}

@Entity
@Table(name = "c")
class C {

  @Id
  Long id;

  // ... other fields
}

当我使用 JPA 中的 Criteria API 获取给定的 A 时,Hibernate 首先仅获取 A,然后获取每个 A、所有 B,最后获取每个 B 所有 C。

是否可以通过一次选择来强制获取,这在理论上是可能的?

最佳答案

Hibernate 不支持很好地获取多个急切集合。看看这里。

顺便说一句,您真的需要急切加载这些集合吗?

Hibernate cannot simultaneously fetch multiple bags

关于java - Hibernate 是否可以通过一次选择获取两层集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15481083/

相关文章:

java - Eclipse 重命名不能完全工作

java - 如果 ResultSet 可以用于 getBinaryStream() 但实际上却没有,是否开销太大?

java - 如何在 JPA 中查询 List<String> 类型的属性

java - Hibernate 无法使用 cascade all 保存子对象

java - 带有类名的 JPA/Hibernate 查询?

java - hibernate 分页限制 OneToMany 集合的大小?

Java JSON 输出双 }} 结尾

java - 根据出现次数打印

java - 在 @OneToMany 中的 hibernate 中删除 set null

jsf - 在dataTable中显示一对多关系