JPA的级联操作 CascadeType
级联操作是jpa表关联关系注解 OneToOne OnTOMany ManyToOne ManyTOMany 中配置的属性,代表本身对关联的实体拥有的操作权限;
JPA的级联配置项4种
- ALL: 所有级联操作
- PERSIST: 级联保存
- MERGE: 级联更新
- REMOVE: 级联删除
- REFRESH: 级联刷新
- DETACH: 级联托管/游离操作
为更方便的理解这里假设
用户表:User部门表:Dept
用户表中引用部门对象的实体
1.CascadeType.ALL
包含所有级联操作,不建议直接使用根据实际业务给相应权限
2.CascadeType.PERSIST
级联保存: 保存用户时可以同时保存创建的部门并建立外键关联
3.CascadeType.MERGE
级联更新: 在用户中可以修改关联的部门信息
4.CascadeType.REMOVE
级联删除: 在部门中配置,删除部门时同时删除部门下的用户
5.CascadeType.REFRESH
级联刷新: 这个不太理解,后续在补充
6.CascadeType.DETACH
级联脱管/游离操作: 删除部门时部门被用户外键引用,无法删除.配置了DETACH就可以撤销用户的外键关联删除部门
JoinColumn 不生成外键
- foreignKey = @ForeignKey(name = “none”,value = ConstraintMode.NO_CONSTRAINT)
MySQL数据库是不会生成外键的,其它数据库暂未测试