具有以下内容:
//User class... @ManyToOne(cascade=CascadeType.REMOVE) @JoinColumn(name="INSTITUTION_ID") public void setInstitution(final Institution institution) { this.institution = institution; }
这是否意味着删除User对象会删除与其关联的Institution对象?如果是这种情况,我将不遵循为什么需要这样做。例如说该机构有很多用户。这是否意味着删除这些用户之一会删除该机构,在这种情况下,所有其他用户也会丢失该机构?
没错,很少(如果曾经)需要将CascadeType.REMOVE与ManyToMany或ManyToOne一起使用。在JPA 2.0规范中记录如下:
关系建模注释限制了cascade = REMOVE规范的使用。级联=删除规范仅应应用于指定为OneToOne或OneToMany的关联。将Cascade = REMOVE应用于其他关联的应用程序不可移植。
之所以存在,可能是因为没有合理的方法将级联的允许值限制为CascadeType枚举值的某些子集。