【发布时间】:2012-03-15 17:52:28
【问题描述】:
有人能解释一下如何将一对零关联与休眠映射(使用映射 xml 文件而不是注释)吗?
这些是规则:
- 一个菜单可以关联 0 或 1 个区域。
- 一个区域属于一个菜单。 (或者,如果您更容易对其建模:一个区域可以关联 0 或 1 个菜单)。
这是所需的表(我想使用外键):
TABLE MENU:
ID
NAME
FKID_AREA
TABLE AREA:
ID
NAME
FKID_MENU
谢谢!
【问题讨论】:
有人能解释一下如何将一对零关联与休眠映射(使用映射 xml 文件而不是注释)吗?
这些是规则:
这是所需的表(我想使用外键):
TABLE MENU:
ID
NAME
FKID_AREA
TABLE AREA:
ID
NAME
FKID_MENU
谢谢!
【问题讨论】:
您应该从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>
【讨论】:
您应该从 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>
【讨论】: