Spring Boot学习笔记(六)Spring Data Jpa 快速上手(五)多对多@ManyToMany 以及级联操作

本文介绍了如何在Spring Boot中使用Spring Data JPA处理多对多@ManyToMany关系,包括创建表和实体类、创建repository以及执行新增、更新、查询和删除操作。在处理多对多关系时,由于可能导致无限递归,因此避免使用@OneToMany,而是采用@ManyToMany。在级联操作中,特别强调了查询时需要在事务中进行以确保懒加载的正确性。
摘要由CSDN通过智能技术生成

阅读此文章需要有基础的jpa知识,此处不讲述entity、repository。
可以查看我之前的文章Spring Data Jpa 快速上手(一)使用spring data jpa 实现增删改查

1.创建表和实体类

此次我们使用最常见的多对多关系,用户与角色,一个用户可以拥有多个角色,一个角色也可以被多个用户拥有。此时我们需要一个中间表保持两者的关系,因为我们通常是赋予用户某个角色,即以修改用户为主体,即虽然是多对多,但仍可视为User为主,Role为从,所以中间表在User中进行维护。

此外,大家可以发现,此处的注解不为@Data,是因为使用@Data(主要是@Data包含了@ToString的效果,@ToString会造成无限迭代)会造成无限迭代(不知为何),所以仅仅使用我们需要的@Getter @Setter 两个注解就可以了
并且要自己重写toStirng方法(不能包括@ManyToMany所对应的的属性)
Role实体类

@Entity
@Getter
@Setter
@Table(name = "sys_role")
public class Role {
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "role_id")
    private Long roleId;
    @Column(name = "role_name")
    private String roleName;

    //配置多对多
    @ManyToMany(mappedBy = "roles")  //配置多表关系
    private Set<User> users = new HashSet<>();
    
    @Override
    public String toString() 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值