1

我有两个表设置为父/子,例如公司和产品,如下所示 -

公司表:-

company_id , Company_name, creation_date

101,IBM,2010 年 5 月 12 日

产品表:-

company_id、Product_id、Product_name

101, 1001, 日食

101、1002、DB2

保存新的父子(公司和产品)不是问题。当用户从公司对象中删除产品时,就会出现问题。

我在 Company.java 中有以下产品映射信息

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "COMPANY_ID",nullable=false)
@OrderBy(clause = "PRODUCT_NAME" )
@ForeignKey(name = "fk_company_product")     
private List<Product> products = new ArrayList<Product>();   

通过此映射,产品信息正在正确更新,但如果我从公司 bean 中删除产品并保存公司,则不会从产品表中删除产品信息。

谢谢你的帮助。

4

1 回答 1

4

仅当您删除父级时,级联删除才有效。要使用注释处理删除,您应该使用:

  1. 如果您使用的是 JPA 2.0:

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval=true)
    
  2. 如果您使用的是 JPA 1.0,则可以使用 hibernate 注释:

    @OneToMany(CascadeType.DELETE_ORPHAN)
    
于 2012-06-11T12:50:23.743 回答