2013-07-29 234 views
0

我有一個java對象集更新。我使用SaveOrUpdate方法來做到這一點。它可以很好地更新孩子,但是我的要求存在問題。休眠刪除並更新

因爲如果一個孩子被刪除,我需要從數據庫中刪除一個孩子。

請任何人有一個好主意來實現這個?

例如: -

項目與人有一對多的關係。

項目都有一個屬性附加傷害一樣,

class Project { 
    long id; 
    Set<People> people; 
    ...... 
} 

public void updateProject(Project project) { 

    try { 
     getCurrentSession().saveOrUpdate(project); 
    } catch (Exception ex) { 
     logger.error(ex); 
    } 

項目對象包括人設,但刪除了一些人的ID從。

我需要刪除不想要的人的ID

更新項目謝謝

回答

1

我假設你已經啓用級聯你的項目實體,所以我的猜測是,你需要將orphanRemoval屬性添加到的關係。 例如,對於你的情況將是:

@OneToMany(cascade={CascadeType.ALL}, orphanRemoval=true) 
+0

謝謝您的anwser。我有一個小問題。如果當我要更新孩子時,有人可以添加新的孩子並分配給該項目。在那種情況下,如果我們要使用這個,會發生什麼?刪除新添加的一個也? –

+0

我不太清楚,我完全理解你的問題,但只要你在人員集合中添加新的孩子到集合中,並且你做了saveOrUpdate項目,一切都應該沒問題。由於層疊,新的孩子將被保存 – steelshark

0

參考代碼:配置級聯「全刪除,孤兒」去除孤立數據...

<hibernate-mapping> 
     <class name="User" table="UTABLE" > 
      <id name="UID" column="UID"/> 
      <property name="Name" column="F_Name"/> 
      <set name="phones" table="PHONE_NUMBERS" cascade="all-delete-orphan" lazy="true"> 
      <key column="UID"/> 
      <one-to-many class="PhoneNumber" /> 
     </set> 
     </class> 
    </hibernate-mapping>