【持久层框架】- SpringData - JPA( 四 )

运行结果

【持久层框架】- SpringData - JPA

文章插图
数据库中
【持久层框架】- SpringData - JPA

文章插图
多对多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);}在数据库中的中间表就能够看到如下数据 。
【持久层框架】- SpringData - JPA

文章插图
文章推荐
  • 元动力文档合集 - SPRING-DATA-JPA
  • CSDN:https://blog.csdn.net/cmx1060220219/article/details/106259423
  • CSDN:https://blog.csdn.net/localhost01/article/details/83422893
创作不易 , 如有错误请指正,感谢观看!记得点赞哦!

推荐阅读