我有两个表设置为父/子,例如公司和产品,如下所示 -
公司表: -
company_id,Company_name,creation_date
101,IBM,2010年5月12日
产品表: -
company_id,Product_id,Product_name
101,1001,Eclipse
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中删除产品并保存公司,则不会从Product表中删除产品信息。
感谢您的帮助。
答案 0 :(得分:4)
级联删除仅在您删除父级时有效。要使用注释处理删除,您应该使用:
如果您使用的是JPA 2.0:
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval=true)
如果您使用的是JPA 1.0,则可以使用hibernate注释:
@OneToMany(CascadeType.DELETE_ORPHAN)