2012-05-16 53 views
3

下列要求:JPA /休眠Cascade.Remove使用情況@ManyToOne

//User class... 

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

這是否意味着刪除用戶對象將刪除與之相關的機構對象?如果是這種情況,我不會跟蹤爲什麼會這樣。比如說,該機構有許多用戶。這是否意味着刪除其中一個用戶會刪除該機構,在這種情況下,所有其他用戶都會丟失該機構?

回答

4

你是對的,它很少(如果有的話)需要,而不是便攜式構造使用與ManyToMany或ManyToOne CascadeType.REMOVE。這在JPA 2.0規範中記錄如下:

關係建模註釋約束了cascade = REMOVE規範的使用。級聯= REMOVE規範應該 僅適用於指定爲OneToOne或OneToMany的關聯。將cascade = REMOVE應用於其他 關聯的應用程序不可移植。

它存在的原因很可能只是沒有合理的方法來將允許的級聯值限制爲CascadeType枚舉值的某個子集。