具有以下内容:
//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规范中记录如下:
关系建模注释限制了
级联=删除规格。级联= REMOVE规范应
仅适用于指定为OneToOne或
一对多。将Cascade = REMOVE应用于其他应用程序
关联不是可移植的。
之所以存在,可能是因为没有合理的方法将级联的允许值限制为CascadeType枚举值的某些子集。
关于hibernate - JPA/Hibernate Cascade。删除@ManyToOne的用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10620242/