Spring Boot时两个实体之间的多对多关系
我的Spring-Boot应用程序中有两个实体:
@Entitypublic class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String firstname;
String lastname;
String username;
String password;
}
和
Entity@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
String description;
}
对于我的MySql数据库
我已经排除了此问题的getter和setter方法。
我想实现两个实体之间 。每个用户都应该能够为其分配多个角色
我已经为数据库中的两个表创建了一个映射表。它有行
- 用户身份
- 角色编号。
我还创建了一个新的Entity ,如下所示:
@Entity@Table(name = "user_role")
public class UserRole implements Serializable{
private User user;
private Role role;
@Id
@ManyToOne
@JoinColumn(name = "user_id")
public User getuser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Id
@ManyToOne
@JoinColumn(name = "role_id")
public Role getrole(){
return role;
}
public void setRole(Role role){
this.role = role;
}
}
现在我的问题是:这种构造正确吗?如果是,我如何在现有用户中添加现有角色并在Spring Boot中获得该用户的角色?
回答:
您可以使用Hibernate / Spring Data找到任何与多对多关系相关的教程,例如: Spring
Data多对多
使用您的模型,添加关系映射很简单,如下所示:
@Entitypublic class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String description;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable
private Set<User> users;
}
和这个:
@Entitypublic class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String firstname;
private String lastname;
private String username;
private String password;
@ManyToMany(mappedBy = "users")
private Set<Role> roles;
}
以上是 Spring Boot时两个实体之间的多对多关系 的全部内容, 来源链接: utcz.com/qa/427792.html