我正在尝试实现一个简单的弹簧安全项目,基本上我有用户和角色实体。我有一组角色“管理员”和“用户”。
现在我只想分配“用户”角色以及创建一个新用户。
我曾尝试使用具有相同问题的列表和集合。
用户实体有 Set<Role>
public class User {
@Id
@Column(name = "user_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int user_id;
@NotNull
@Column(name = "user_name", unique = true)
private String userName;
@NotNull
@Column(name = "first_name")
private String firstName;
@NotNull
@Column(name = "last_name")
private String lastName;
@Column(name = "roles")
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;}
和角色实体:
public class Role {
}
@Id
private int role_id;
private String role;
}
这是将用户保存到我的数据库的 saveMyUser 方法。当我使用:
public void saveMyUser(User user) {
Set<Role> hash_Set = new HashSet<Role>();
user.setPassword(encoder().encode(user.getPassword()));
user.setRoles(new HashSet<>(roleRepository.findAll())); <--- Here
userRepository.save(user);
}
user.setRoles(new HashSet<>(roleRepository.findAll()));将所有角色分配给用户,因为我只想为新用户分配“USER”角色。
我试过了user.setRoles(new HashSet<>(roleRepository.findByRole(2)));,也试过user.setRoles(new HashSet<>(roleRepository.findByID(2)));这个错误:无法推断 HashSet<> 的类型参数。
我的数据库中的角色表:
role_id role
1 ADMIN
2 USER
紫衣仙女
波斯汪
aluckdog
相关分类