Hibernate父子映射

时间:2011-01-10 18:02:06

标签: hibernate

在Hibernate中映射父子关系映射,但无法找到最佳方法。这是对问题的描述。

我有一个类作为父类和一个子类没有独立的生命周期。这是我的父类的映射

<class name="PARENT" table="PARENT">
    <id name="uuid" type="java.lang.String">
        <column name="UUID" />
        <generator class="uuid"/>
    </id>
    <property name="creationDate" type="java.util.Date">
        <column name="CREATIONDATE" />
    </property>
    <set name="childtable" table="CHILD" inverse="false" lazy="true">
        <key>
            <column name="UUID" />
        </key>
        <one-to-many class="CHILD" />
    </set>

这里是Child类映射

<class name="CHILDCLASS" table="CHILDCLASS">
    <id name="parentID" type="java.lang.String">
        <column name="PARENTCLASSID" />
        <generator class="uuid"/>
    </id>

    <property name="deperatureTime" type="java.util.Date">
        <column name="DEPERATURETIME" />
    </property>

但我想要的是当父类被持久化时,它将使子类持久化,这是可以实现的,但我希望在子类中,parentclassid字段应该具有父类的标识符字段的值。

e.g

  

如果父类ID值id为1,而不是{child}的PARENTCLASSID个字段   应该有值1

我不确定我是否能理解这个问题,如果不是,请问我,我会尝试解释。

2 个答案:

答案 0 :(得分:0)

我怀疑你正在寻找一对一的共享主键映射。 这有帮助吗? Shared primary key in hibernate

答案 1 :(得分:0)

我认为你正在寻找这样的东西:

<class name="PARENTCLASS" table="parentTable">  
    <id name="parentID" type="java.lang.String">
        <column name="PARENTCLASSID" />
        <generator class="uuid"/>
    </id>
    <property name="deperatureTime" type="java.util.Date">
        <column name="DEPERATURETIME" />
    </property>
    <set inverse="true" name="fieldName">
        <key>
            <column name="sql_id_name" not-null="true"/>
        </key>
    <one-to-many class="CHILDCLASS"/>
    </set>
</class>