映射与hibernate的一对零关联

时间:2012-03-15 09:15:39

标签: java hibernate

有人可以解释我如何映射与hibernate的一对零关联(使用映射xml文件而不是注释)?

这些是规则:

  • 菜单可以包含0或1个区域。
  • 区域属于菜单。 (或者,如果您更容易对其进行建模:区域可以关联0或1个菜单。)

以下是所需的表格(我想使用外键):

TABLE MENU:
ID
NAME
FKID_AREA

TABLE AREA:
ID
NAME
FKID_MENU

谢谢!

2 个答案:

答案 0 :(得分:0)

您应该从FKID_AREA表中移除MENU,因为它不需要(甚至是一个问题,因为它是AREA.FKID_MENU的转发版。)

对于其余部分,Hibernate documentation on bidirectional one-to-one association mappings

中对此进行了描述
<class name="Area">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    <many-to-one name="menu" 
        column="FKID_MENU" 
        unique="true"
        not-null="false"/>
</class>

<class name="Menu">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
   <one-to-one name="area" 
        property-ref="menu"/>
</class>

答案 1 :(得分:0)

您应该从AREA表中删除FKID_MENU。根据您的描述,您的hbm映射将在

之下
<class name="Menu">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    <property name="name" cloumn="name"/>
    <many-to-one name="area" column="FKID_AREA" class="Area"/>
</class>

<class name="Area">
    <id name="id" column="ID">
        <generator class="native"/>
    </id>
    <property name="name" cloumn="name"/>
</class>