Spring JPA的多表查询

SpringBoot JPA的多表查询

1.关系映射
单项多对一关联
我们以User和Role表为例
修改User实体类,添加Role对象
在这里插入图片描述

@ManyToOne注解映射多对一关联,targetEntity属性表示关联实体类型,可以省略
@JoinColumn注解映射的外键字段,如果不指定,则生成一张新表维护两个对象之间的关系

2.创建UserRepository接口
在这里插入图片描述

3.编写测试类即可
在这里插入图片描述
4.双向一对多关联

在这里插入图片描述

●targetEntity属性表示关联的实体类型
●feteh 属性表示加载策略,FetchType 取值有LAZY及EAGER, LAZY 表示延迟加载,
EAGER表示立即加载。@ManyToOne注解也包含该属性,且默认值为EAGER,表示
立即加载,所以查询User时通过左外关联立即获取Role数据: @One ToMany注解
该属性默认值为LAZY。
●cascade属性表示级联操作,CascadeType取值有PERSIST、 REMOVE、 …等.
PERSIST表示级联持久化(保存)操作,REMOVE级联删除,ALL 级联所有操作。
@ManyToOne注解也包含该属性,但一般不在多的一方进行级联操作。
●mappedBy 属性用来设置对象之间的关系维护方(关系维护通过操作外键完成)。如
不指定mappedBy属性,则对象均由自己维护关系(外键),操作-方对象时,会额
外产生更新外键的sQL语句。所以一般在@One ToMay注解中指定mappedBy属性,
且属性值为多方对象中关联的一方属性名, 并且此时一-方 实体中不能添加
JoinColumn注解。

在这里插入图片描述
这个地方要使用立即加载否则可能会报错
在这里插入图片描述

4.级联新增

记得将
在这里插入图片描述

cascade = CascadeType.PERSIST

在这里插入图片描述
记得将实体类手动生成set/get
不要使用Data注解可能发生循环报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值