欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于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