【问题标题】:Map a one-to-zero association with hibernate映射与休眠的一对零关联
【发布时间】:2012-03-15 17:52:28
【问题描述】:

有人能解释一下如何将一对零关联与休眠映射(使用映射 xml 文件而不是注释)吗?

这些是规则:

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

这是所需的表(我想使用外键):

TABLE MENU:
ID
NAME
FKID_AREA

TABLE AREA:
ID
NAME
FKID_MENU

谢谢!

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    您应该从MENU 表中删除FKID_AREA,因为它不是必需的(甚至是一个问题,因为它与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>
    

    【讨论】:

    【解决方案2】:

    您应该从 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多