1
を保存していない、それだけでユーザーテーブルではなく役割にユーザーと役割テーブルにデータを保存しています。助けていただければ幸いです。Hibernateのユーザーモデルは、ユーザーの役割と役割
(各ユーザーは多くの役割を持っており、それぞれの役割が多くのユーザーに属することができます)
私は、データベース内の3つのテーブルがあります。
:2つのHibernateのエンティティが続くusers: (id,username)
roles_users: (user_id, role_id)
roles: (id,role)
を
これは私のユーザーモデルです:
@Entity(name = "users")
public class User{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String username;
@ManyToMany(mappedBy = "users", cascade = CascadeType.PERSIST)
private Set<Role> roles;
public Long getId() {
return id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Set<Role> getRoles() {
if (roles == null) {
roles = new HashSet();
}
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
}
これは私のロールモデルである:
@Entity(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "roles_users",
joinColumns = @JoinColumn(name = "role_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"),
uniqueConstraints = {@UniqueConstraint(columnNames = {"role_id", "user_id"})})
private Set<User> users;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<User> getUsers() {
if (users == null) {
users = new HashSet();
}
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
これは私がユーザーとその役割(複数可)を保存するために使用するコードです:
User user = new User();
Role role = new Role();
Set<User> userSet = new HashSet();
Set<Role> roleSet = new HashSet();
user.setUsername("Peter");
role.setName("ROLE_ADMIN");
userSet.add(user);
roleSet.add(role);
role.setUsers(userSet);
user.setRoles(roleSet);
userService.saveUser(user);
...私はそれをより速く見たはずです。関係を切り替えて、ユーザーがRoleオブジェクトを保存するようになりました。どうも! –