springDataJpa一对多和多对一
程序员文章站
2024-03-18 16:43:40
...
一.一对多和多对一的关系映射
1.逻辑
先建立好表之间的关系。
通过外键将主表的id进行绑定。
2.双向关联和单向关联
双向关联:指的是俩表之间可以互相关联,操作一张表的同时可以操作另一张表。
单向关联:指的是只有一张表可以关联另一张表,另一张表不能操作该表。
3.一对多的关系映射
(1)语法
//配置联系人的关联,注意toString不能包含该属性
/**
* 配置一对多关系
* 1.关系声明
* targetEntity = 对方实体类的字节码对象
* 2.配置外键
* @JoinColumn(name = "从表的外键字段名称",referencedColumnName = "主表的id")
*/
@OneToMany(targetEntity = 对方实体类的字节码对象)
@JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
(2)范例
4.多对一的关系映射
(1)语法
/**
* 配置多对一的关系
* 1.配置表关系
* @ManyToOne(targetEntity = 一的一方实体类字节码对象)
* 2.配置外键
* @JoinColumn(name = "从表的外键字段名称",referencedColumnName = "主表的id")
*/
@ManyToOne(targetEntity = Customer.class)
@JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
(2)范例
5.设置消除主表的外键维护全
(1)语法
//放弃外键约束权,mappedBy设置外键约束维护是从表的customer属性上
@OneToMany(mappedBy = "customer") //mappedBy设置外键约束所在位置
(2)范例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4eQm12C-1590222877026)(https://uploader.shimo.im/f/pLaR4ufxy7YU8zYe.png!thumbnail)]
6.使用外键约束同时操作俩张表
二.设置级联操作
1.概述
操作一个对象同时操作他的关联对象。
2.逻辑
- 需要区分操作的主体。
- 需要操作主体的实现类上,添加级联属性(需要添加到多表映射关系的注解上)
- cascade(配置级联)
3.级联添加的语法
//不推荐级联删除,如果一对多或者多对一,可以使用。多对多不推荐级联删除
//cascade设置级联属性,删除的属性值是delete
cascade = {CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REMOVE}
4.范例
三.源码
推荐阅读
-
Mybatis06----查询多对一,一对多的处理
-
springDataJpa一对多和多对一
-
Hibernate学习包 博客分类: Hibernate Hibernate配置一对一一对多Middlegen-Hibernate-r5.rar
-
多源最短路:每一对顶点之间的最短路径
-
多对一单向关联 博客分类: hibernate 多对一单向关联
-
多对一单向关联 博客分类: hibernate 多对一单向关联
-
五、hibernate中持久层操作(多表之间的关联关系操作,1对1,一对多,多对多、继承)
-
Mybatis中的高级映射一对一、一对多、多对多
-
Mybatis中的高级映射一对一、一对多、多对多
-
Java的Hibernate框架中一对多的单向和双向关联映射