天天看點

【criteria CascadeType】級聯的不同情況

使用criteria進行增删改查操作,可能會發生級聯删除的情況,例如對員工表進行删除,可能會級聯删除掉部門表中的某一條資訊【類似這樣的情況】

對此,我們可以在實體類中對級聯的關系進行管理:

【criteria CascadeType】級聯的不同情況

CascadeType.PERSIST隻有A類新增時,會級聯B對象新增。若B對象在資料庫存(跟新)在則抛異常(讓B變為持久态) 

CascadeType.MERGE指A類新增或者變化,會級聯B對象(新增或者變化) 

CascadeType.REMOVE隻有A類删除時,會級聯删除B類; 

CascadeType.ALL包含所有; 

CascadeType.REFRESH沒用過。 

綜上:大多數情況用CascadeType.MERGE就能達到級聯跟新又不報錯,用CascadeType.ALL時要斟酌下CascadeType.REMOVE