3

具有以下内容:

//User class...

@ManyToOne(cascade=CascadeType.REMOVE)
@JoinColumn(name="INSTITUTION_ID")
public void setInstitution(final Institution institution) {
    this.institution = institution;
}

这是否意味着删除用户对象会删除与其关联的机构对象?如果是这种情况,我不明白为什么需要这样做。例如,该机构有很多用户。这是否意味着删除其中一个用户会删除该机构,在这种情况下,所有其他用户也会丢失它?

4

1 回答 1

4

你是对的,将 CascadeType.REMOVE 与 ManyToMany 或 ManyToOne 一起使用是很少(如果有的话)需要且不可移植的构造。这在 JPA 2.0 规范中记录如下:

关系建模注释限制了 cascade=REMOVE 规范的使用。cascade=REMOVE 规范应仅应用于指定为 OneToOne 或 OneToMany 的关联。将 cascade=REMOVE 应用于其他关联的应用程序不可移植。

它存在的原因可能只是没有合理的方法将允许的级联值限制为 CascadeType 枚举值的某个子集。

于 2012-05-16T16:19:37.037 回答