gpt4 book ai didi

HIbernate 和集合的急切加载

转载 作者:行者123 更新时间:2023-12-02 22:59:44 25 4
gpt4 key购买 nike

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

因此,我在一对多和多对一映射条目上指定 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 是 Bs 表中当前最高的 id。

这是怎么回事?

顺便说一句,我正在使用 Spring hibernate 模板,调用 template.get(class,id) 返回 A

最佳答案

对n+1问题的很好的描述:What is SELECT N+1?

关于HIbernate 和集合的急切加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com