2013-11-24 73 views
0

假設我有一個名爲Record的類,它與名爲Artist的類有多對一的關係。JPA:在共享對象上級聯

如果我定義了一個級聯選項,例如:

class Record{ 

    @ManyToOne(cascade = CascadeType.ALL) 
    private Artist artist; 

    ... 
} 

說我有一些在我的EntityManager和一些共享同一個藝術家的管理記錄。 當我在Record對象上調用,更新,合併,分離,移除等操作時會發生什麼? 藝術家是否會被移除?它會被分離嗎?如果是這樣,引用該藝術家的其他Record類會發生什麼?

回答

2

由於您將關聯配置爲cascade = CascadeType.ALL,因此在記錄上完成的所有操作也將在關聯的藝術家上完成。刪除該記錄將刪除該藝術家。如果另一條記錄也引用同一個藝術家,這將會失敗,並出現外鍵約束異常(如果它們在數據庫中正確配置)。

在ManyToXxx關聯上配置這樣的級聯沒有多大意義。

+0

謝謝。我很難弄清楚實體管理者是否包含一些邏輯來檢查共享對象。但他們似乎沒有。 –