使用criteria進行增删改查操作,可能會發生級聯删除的情況,例如對員工表進行删除,可能會級聯删除掉部門表中的某一條資訊【類似這樣的情況】
對此,我們可以在實體類中對級聯的關系進行管理:
CascadeType.PERSIST隻有A類新增時,會級聯B對象新增。若B對象在資料庫存(跟新)在則抛異常(讓B變為持久态)
CascadeType.MERGE指A類新增或者變化,會級聯B對象(新增或者變化)
CascadeType.REMOVE隻有A類删除時,會級聯删除B類;
CascadeType.ALL包含所有;
CascadeType.REFRESH沒用過。
綜上:大多數情況用CascadeType.MERGE就能達到級聯跟新又不報錯,用CascadeType.ALL時要斟酌下CascadeType.REMOVE