hibernate CascadeType屬性說明
阿新 • • 發佈:2019-03-28
調用 obj let 裏的 pda per cad fresh all
cascade屬性: 指定級聯操作的行為(可多選)
- CascadeType.PERSIST 級聯新增(又稱級聯保存):
獲取A對象裏也同時也重新獲取最新的B時的對象。即會重新查詢數據庫裏的最新數據,並且,只有A類新增時,會級聯B對象新增。若B對象在數據庫存(跟新)在則拋異常(讓B變為持久態),對應EntityManager的presist方法,調用JPA規範中的persist(),不適用於Hibernate的save()方法
- CascadeType.MERGE 級聯合並(又稱級聯更新)
指A類新增或者變化,會級聯B對象(新增或者變化) ,對應EntityManager的merge方法,調用JPA規範中merge()時,不適用於Hibernate的update()方法
- CascadeType.REMOVE 級聯刪除
只有A類刪除時,會級聯刪除B類,即在設置的那一端進行刪除時,另一端才會級聯刪除,對應EntityManager的remove方法,調用JPA規範中的remove()時,適用於Hibernate的delete()方法
- CascadeType.REFRESH 級聯刷新
獲取order(一或多)對象裏也同時也重新獲取最新的items(多)的對象,對應EntityManager的refresh(object),調用JPA規範中的refresh()時,適用於Hibernate的flush()方法
- CascadeType.ALL
包含所有持久化方法
綜上:大多數情況用CascadeType.MERGE就能達到級聯跟新又不報錯,用CascadeType.ALL時要斟酌下CascadeType.REMOVE
hibernate CascadeType屬性說明