使用Hibernate以一对多关系删除子对象/记录

时间:2011-12-05 12:18:57

标签: java hibernate

我在产品和产品之间有一个亲子(一对多)关系。包。一个产品可以有多个包。在我的“编辑产品”jsp页面中,我允许用户编辑产品&删除/添加/编辑任何包。现在,在提交更改时,我在我的控制器方法中执行saveOrUpdate(product)。我观察到的是,新的软件包将被添加到数据库中,但是用户删除的软件包因​​此不会从软件包集中删除。我的hiberate配置代码段如下。我在这里错过了什么吗?

<hibernate-mapping>
    <class name="author.vo.ProductVO" table="Product">
    <id name="ProductID" type="long">
            <column name="Product_ID" />
            <generator class="increment" />
     </id>
    <set name="packages" inverse="true" cascade="all" lazy="false">
    <key column="Product_ID" not-null="true" on-delete="cascade"/>
    <one-to-many class="author.vo.PackageVO" />
     </set>

添加产品的代码

@Autowired
private HibernateTemplate hibernateTemplate;

this.hibernateTemplate.saveOrUpdate(prod);

1 个答案:

答案 0 :(得分:0)

你应该添加&#34; cascade delete orphan&#34;你的xml配置,首先,为什么不尝试一个简单的情况。

  1. 是与父母一起工作的保存。
  2. 是与父母一起工作的删除。