3
我有一個類A
和類B
之間的一對多關係,由數據庫中兩個表之間的外鍵關係表示。並且我希望通過hibernate快速加載B
的集合,以便它可以在會話之外遍歷。HIbernate和渴望加載集合
因此,我在一對多和多對一的映射條目上都指定了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的模板順便說一句,叫template.get(class,id)
返回N + 1個問題的A
對不起,我沒有看到你的答案如何是非常有用的。這裏只執行一次選擇,返回預期的行數。但是,Java中返回的集合中的條目數量太多了 – ThuneGrill 2011-04-29 12:28:06