Java 休眠删除和更新

Java 休眠删除和更新,java,hibernate,oracle11g,hibernate-mapping,Java,Hibernate,Oracle11g,Hibernate Mapping,我有一个java对象要更新。我使用SaveOrUpdate方法来实现这一点。它可以很好地更新子级,但我的要求有一个问题 因为如果删除了一个子项,我需要从数据库中删除一个子项 请问有谁有一个好主意来实现这一点 例如: 项目与人有一对多的关系 这个项目有一个类似心房肌的 class Project { long id; Set<People> people; ...... } public void updateProject(Project proje

我有一个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;
设置人员;
......
}
公共无效更新项目(项目){
试一试{
getCurrentSession().saveOrUpdate(项目);
}捕获(例外情况除外){
记录器错误(ex);
}
项目对象包含人员集,但从中删除了一些人员ID

我需要更新项目删除不需要的人ID


谢谢

我假设您已经在项目实体上启用了层叠,所以我猜您需要将删除属性添加到关系中。 您的案例示例如下:

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

参考代码:使用“全部删除孤立数据”配置级联以删除孤立数据

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


谢谢你的回复。我有一个小问题。如果我要更新孩子,有人可以添加新的孩子并分配给项目。在这种情况下,如果我们要使用这个,会发生什么?删除了新添加的一个?我不太确定我是否完全理解你的问题,但只要你添加新的孩子到人员集中的集合,然后执行项目的保存或更新,一切都应该正常。由于层叠,新的子项将被保存