2013-07-29 191 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>