gpt4 book ai didi

java - 如何从一组角色中仅获取一个角色

转载 作者:行者123 更新时间:2023-12-02 10:00:20 25 4
gpt4 key购买 nike

我正在尝试实现一个简单的 spring 安全项目,其中基本上有用户和角色实体。我有一组角色“管理员”和“用户”。

现在我只想分配“USER”角色以及创建新用户。

我尝试使用列表和集合也遇到同样的问题。

用户实体有 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

最佳答案

HashSet 构造函数采用一个 Collection,而不是单个元素。这一行:

user.setRoles(new HashSet<>(roleRepository.findAll()));

使用您的所有角色创建一个新的 HashSet。这一行

user.setRoles(new HashSet<>(roleRepository.findByRole(2)));

尝试在构造函数中使用单个元素创建一个新的 HashSet,这将不起作用,因为 Role 不是 Collection 的实例。

只需获取您的角色,创建一个 HashSet,添加角色,然后设置用户的角色:

Role role = roleRepository.findByRole(2);
Set<Role> roles = new HashSet<>();
roles.add(role);
user.setRoles(roles);

关于java - 如何从一组角色中仅获取一个角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55680704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com