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