Spring Boot时两个实体之间的多对多关系

我的Spring-Boot应用程序中有两个实体:

@Entity

public 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多对多

使用您的模型,添加关系映射很简单,如下所示:

@Entity

public 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;

}

和这个:

@Entity

public 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

回到顶部