2012-06-04 80 views
0

外鍵我有父子關係級聯在多對一associtaion

<class name="parent"> 
    <id name="id">  
     <generator class="assgned"/> 
    </id> 
    <property name="currency"/> 
    <property name="description" length="400"> 
</class> 

<class name="child"> 
    <id name="id">  
<generator class="native"/> 
</id> 
    <property name="someprop1"/> 
    <property name="someprop2"> 
    <many-to-one class="Parent" column="parent_field" name="parent" cascade="save-  
    update" /> 
</class> 

兩個班,當我插入孩子一個新行,它更新而不是插入一個新的子類的現有行行並用外鍵映射新的id。

我覺得我在選擇發電機類和級聯選項時是錯誤的。請幫忙。

+0

現在你可以清除我的疑問? – deepika

+1

您的Java代碼在哪裏,假設這是一個Java問題?這是一個SQL問題呢? –

+0

您是先設置新行的ID嗎?這可能會導致休眠不知道它的插入! –

回答

0

級聯的映射應該在Parent類中,並且指向子類的方向。 在保存父項的同時,如果在子項列表中添加新的子對象以及較舊的子對象,它將被保存在帶有自動遞增ID的新行(如果已配置),請記住,如果要使用父節點保存子節點,並且所有子節點都有對象主鍵集,則它們將更新DB中的現有行,因爲它是正確的工作行爲。