我想在Hibernate(XML映射)中创建一对一的关系。
有许多示例说明了如何执行此操作。一个受欢迎的例子是有住址的人。人员表具有要处理的外键。为了能够在没有地址的情况下创建个人记录,请使外键为空。
那不是我想要的。我要相反。在我的数据库中,我有一个表“ Merchants”和一个表“ MerchantSettings”。每个MerchantSettings记录都属于一个Merchant,因此获得了一个外键MerchantId。(通过这种方式,我无需设置即可添加商家记录。)
在我的代码中,我有一个带有属性Settings的Merchant类。映射应为什么样?
(我不想使用'component'。表“ MerchantSettings”具有它自己的私钥。)
有人知道该怎么做吗?
[更新]
因为我现在确实想使用与Karibasappa GC提议的相同的主键,所以我决定在表“ Merchants”中添加一个外键。我只是将其设置为可为空,因此不需要具有MerchantSettings记录(例如人/地址示例)。
这不是理想的选择,但我可以配合使用。
谢谢大家。
尽管这并不是我想要的,但Marked Karibasappa GC的答案似乎正确,因此我将其标记为可接受的答案。
根据您的要求,您需要使商人成为该关系的所有者。商家应具有自动生成的主键。
并且商人设置应具有一个主键,该主键是商人表中的外键。
因此,如果以上理解是正确的,那么这里就是您的映射
merchant.hbm.xml
<hibernate-mapping package="com.kb.model">
<class name="Merchant">
<id name="id" column="id">
<generator class="identity" />
</id>
<property name="name" column="NAME" />
<one-to-one name="merchantsettings" cascade="all"/>
</class>
</hibernate-mapping>
merchantsettings.xml
<hibernate-mapping package="com.kb.model">
<class name="merchantsettings">
<id name="id" column="id">
<generator class="foreign">
<param name="property">merchant</param>
</generator>
</id>
<one-to-one name="merchant" constrained="true"/>
</class>
</hibernate-mapping>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句