gpt4 book ai didi

java - 使用代理的惰性一对一不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:27 25 4
gpt4 key购买 nike

我在经销商和卖家之间建立了一对一的关系,应该懒得使用代理。对于定义外键的一方(卖家,引用经销商),这工作正常。但这在另一边不起作用——卖家总是急切地装货。我按照 "Some explanations on lazy loading" 中的描述设置了 constrained="true" ,但这没有帮助。

以下是使用的映射:

<class name="Role" table="PER_PERSROLE" abstract="true">
<id column="OID" type="long">
<generator class="native" />
</id>
<discriminator column="SUBTYPE" type="string" />
</class>

<subclass name="Dealer" extends="Role" discriminator-value="DEAL">
<property name="gpNr" column="GP_NR" type="string" />
<one-to-one name="seller" property-ref="dealer" lazy="proxy" constrained="true"
outer-join="false" />
</subclass>

<subclass name="Seller" extends="Role" discriminator-value="SELL">
<many-to-one name="dealer" column="SELLER_DEALEROID" lazy="proxy"
outer-join="false" />
</subclass>

这两个类都驻留在一张表中是否有问题?我看到严格来说关系不受数据库限制(它不能使用这个模型),但领域模型总是需要两个实体并且应用程序确保了这一点。

最佳答案

我认为您链接到的页面解释得最好,但我不确定为什么它建议设置 constrained="true"。如果您在数据库级别考虑它,Hibernate 无法在不访问数据库的情况下判断给定属性(经销商的卖家)是否应该为 null(它需要执行 SELECT ... WHERE OID=: sellerOrDealerId 查看是否返回任何行)。当它访问数据库时,它还不如获取该行的其余部分。从关联的另一端(卖方的经销商)来看,没有这样的问题,因为它已经获取了该行(因此 SELLER_DEALEROID 列)。

我曾经遇到过类似的事情,并且能够通过使关联成为非可选的(错误的,不可为空的)来解决它

关于java - 使用代理的惰性一对一不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838894/

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