无法找出与连接表的一对多双向关联

时间:2010-03-23 15:09:03

标签: java hibernate orm join

我正在试图找出这个映射,不知怎的,它只是在逃避我。这很刺激,因为它似乎应该是一种常见的情况。

我有一个基本的Parent和Child类,它们之间有一个连接表。 Child类依赖于Parent:如果从Parent移除Child,则也应删除Child。 Hibernate文档说这可以通过指定cascade =“all,delete-orphan”来实现。

但架构不允许它。如果我使用<一对多>,我无法指定列,连接将无法正常工作。如果我使用< many-to-many unique =“true”>根据Hibernate文档,我无法指定级联。

以下是我现在所拥有的内容,取自Hibernate docs

<class name="Parent" table="parent_table">
    <id name="id" column="id">
        <generator class="assigned"/>
    </id>
    <property name="name" type="string"/>
    <list table="my_join_table" name="children">
        <key column="parent_id"/>
        <list-index column="idx">
        <!-- how do I put a cascade on this!? -->
        <many-to-many column="child_id" 
                      class="Child"
                      unique="true"/>
    </list>
</class>

<class name="Child" table="child_table">
    <id name="id" column="id">
        <generator class="assigned"/>
    </id>
    <property name="name" type="string"/>
    <join table="my_join_table" inverse="true" optional="false">
        <key column="child_id"/>
        <many-to-one name="parent" column="parent_id" not-null="true"/>
    </join>
</class>

1 个答案:

答案 0 :(得分:0)

好的,我终于弄明白了。

cascade属性需要放在list元素而不是多对多:

 <list table="my_join_table" name="children" cascade="all,delete-orphan">
    <key column="parent_id"/>
    <list-index column="idx">
    <!-- how do I put a cascade on this!? -->
    <many-to-many column="child_id" 
                  class="Child"
                  unique="true"/>
</list>