2010-03-23 79 views
0

我試圖弄清楚這個映射,不知何故它只是逃避我。這很刺激,因爲它看起來應該是一個普通的情況。無法找出與連接表的一對多雙向關聯

我有一個基本的父類和子類,它們之間有一個連接表。 Child類依賴於Parent:如果Child從Parent移除,則Child也應該被刪除。 Hibernate文檔說這是通過指定cascade =「all,delete-orphan」來工作的。

但架構不會允許它。如果我使用<一對多>,我不能指定一個列,並且連接不起作用。如果我使用每個Hibernate文檔的<多對多unique =「true」>,我無法指定級聯。

這裏是我現在,從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> 

回答

0

好吧,我理解了它自己,終於。

級聯屬性需要去列表元素上,而不是許多一對多:

<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>