Hibernate可以通过一个选择来获取两个级别的集合吗?

时间:2013-03-18 15:50:34

标签: 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&#39; s。

是否可以强制使用理论上的一个选择进行提取?

2 个答案:

答案 0 :(得分:2)

Hibernate不支持很好地获取多个渴望的集合。看看这里。

顺便说一句,你真的需要那些收藏品吗?

Hibernate cannot simultaneously fetch multiple bags

答案 1 :(得分:0)

没有internal iteration的声音是不可能的。

在这种情况下,我想建议Hibernate Native Sql query