关联休眠映射

RWC

我想在Hibernate(XML映射)中创建一对一的关系。

有许多示例说明了如何执行此操作。一个受欢迎的例子是有住址的人。人员表具有要处理的外键。为了能够在没有地址的情况下创建个人记录,请使外键为空。

那不是我想要的。我要相反。在我的数据库中,我有一个表“ Merchants”和一个表“ MerchantSettings”。每个MerchantSettings记录都属于一个Merchant,因此获得了一个外键MerchantId。(通过这种方式,我无需设置即可添加商家记录。)

在我的代码中,我有一个带有属性Settings的Merchant类。映射应为什么样?

(我不想使用'component'。表“ MerchantSettings”具有它自己的私钥。)

有人知道该怎么做吗?

[更新]

因为我现在确实想使用与Karibasappa GC提议的相同的主键,所以我决定在表“ Merchants”中添加一个外键。我只是将其设置为可为空,因此不需要具有MerchantSettings记录(例如人/地址示例)。

这不是理想的选择,但我可以配合使用。

谢谢大家。

尽管这并不是我想要的,但Marked Karibasappa GC的答案似乎正确,因此我将其标记为可接受的答案。

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章