运行结果

文章插图
数据库中

文章插图
多对多JPA中使用@ManyToMany来注解多对多的关系,由一个关联表来维护 。这个关联表的表名默认是:主表名+下划线+从表名 。(主表是指关系维护端对应的表,从表指关系被维护端对应的表) 。这个关联表只有两个外键字段,分别指向主表ID和从表ID 。字段的名称默认为:主表名+下划线+主表中的主键列名,从表名+下划线+从表中的主键列名 。通过@JoinTable来实现中间表 。创建角色表
package com.jpa.demo.domain;import lombok.Data;import javax.persistence.*;import java.io.Serializable;import java.util.Set;/** * @author: lyd * @description: 角色表 * @Date: 2022/10/2 */@Data@Entity@Table(name = "sys_role")public class Role implements Serializable {@Id@Column(name = "role_id")@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@ManyToMany(mappedBy = "roles")private Set<User> users;private String name;@Column(name = "level")private Integer level = 3;private String description;}
在用户表中@ManyToMany@JoinTable(name = "sys_users_roles",joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "user_id")},inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")})private Set<Role> roles;
测试@Testvoid ManyToMany() {Role role = new Role();role.setName("USER");role.setLevel(2);role.setDescription("管理员");roleRepository.save(role);Set<Role> roles = new HashSet<>();roles.add(role);User user = new User();user.setPassword("lyd_code");user.setNickName("怒放德德");user.setUsername("lyd_code");user.setRoles(roles);User save = userRepository.save(user);System.out.println(save);}
在数据库中的中间表就能够看到如下数据 。
文章插图
文章推荐
- 元动力文档合集 - SPRING-DATA-JPA
- CSDN:https://blog.csdn.net/cmx1060220219/article/details/106259423
- CSDN:https://blog.csdn.net/localhost01/article/details/83422893
推荐阅读
- 风色幻想:命运传说新手英雄怎么培养
- Tubian0.42
- 支付宝蚂蚁庄园11月6日答案分享
- 电子指南针怎么看方向(如何利用手机指南针判别方向)
- 【LeetCode第 313 场周赛】忘光光
- 一加手机怎么样,可以入手吗(一加ace值得入手吗)
- 为什么中国的To B企业都活的很“惨”?
- 怎么玩跳棋(二人跳棋的下法图解)
- 生产管理ERP哪一款比较好?
- 制造业数字化转型,本土云ERP系统如何卡位?