HIbernate和渴望加载集合

时间:2011-04-29 12:16:33

标签: hibernate hibernate-mapping

我在类A和类B之间有一对多的关系,由数据库中两个表之间的外键关系表示。我希望hibernate急切地加载B的集合,以便它可以在会话之外遍历。

所以我在一对多和多对一映射条目上指定lazy="false"

B.hbm

<many-to-one cascade="all" fetch="join" lazy="false"
   class="A" name="...">
   <column name="adgroup_id"/>
  </many-to-one>

A.hbm

<list cascade="all" inverse="true" name="..." lazy="false" fetch="join">
      <key column="adgroup_id" />
       <one-to-many class="B"  />
</list>

我注意到hibernate执行的sql确实返回了预期的行数,但是当我调用时

A.getBs(),我的元素太多了。实际上,由于我的数据库中的ID是自动分配的,它似乎返回n + 1个元素,其中n是B s表中当前最高的id。

这里发生了什么?

我正在使用Spring hibernate模板btw,调用template.get(class,id)返回A

1 个答案:

答案 0 :(得分:-4)

非常好的n + 1问题描述:What is SELECT N+1?