关于Spring data JPA中的onetomore 的级联操作
程序员文章站
2022-03-02 19:00:37
...
/*
删除主表数据
有从表数据
1.在默认情况下,会先把外键字段设置为null,再删除主表数据。
因此如果在数据库的表结构上,外键字段有非空约束,默认情况就会报错。
2.如果配置了放弃维护关联关系,则与设不设置非null就没有关系,一定不能删除。
3.最后如果需要删除,则需要进行使用级联删除引用。
无从表数据
没有限制,可以随便删除
级联操作:
案例:客户和联系人的案例(1对多的关系)
客户:一家公司
联系人:这家公司的员工
一个客户可以具有多个联系人
一个联系人从属于一家公司
分析步骤:
①明确表的关系
一对多的关系
②确定表类型(描述 外键|中间表)
主表:客户类
从表:联系人表
*再从表上添加外键
③编写实体类,在实体类中描述表关系(包含关系)
客户:在客户的实体类中包含一个联系人的集合
联系人:在联系人的实体类中包含一个客户的对象
④配置映射关系
*使用JPA注解配置一对多映射关系
级联:
操作一个对象的同时操作他关联的对象
级联操作:
①需要区分操作主题
②需要在操作主题的实体类上,添加级联属性(需要添加到多表映射关系的注解上)
③cascade(配置级联)
级联添加:
案例: 当保存一个客户的同时保存联系人
级联删除:
案例: 当删除一个客户的同时删除所有联系人
//CascadeType.all :所有
MERGE :更新
PERSIST :保存
REMOVE: 删除
@OneToMany(mappedBy = "blog",cascade = CascadeType.ALL)
private List<Comment> comments = new ArrayList<>();
还有一点 级联删除要把配置文件中的
jpa:
hibernate:
ddl-auto: update
最后一行改为update
推荐阅读
-
Spring Data Jpa 中级联操作CascadeType的含义
-
spring-data-jpa中findOne与getOne的区别说明
-
在Spring Data JPA中引入Querydsl的实现方式
-
spring data jpa @Query注解中delete语句报错的解决
-
Spring boot中Spring-Data-JPA操作MySQL数据库时遇到的错误(一)
-
Spring Data JPA中多数据源的配置
-
关于微信小程序Page中data数据操作和函数调用的解析
-
关于Spring Data JPA更新部分字段的问题
-
Spring Data Jpa 基于注解的级联查询
-
Spring Data JPA中的@DynamicUpdate注解