Я пытаюсь реализовать простой весенний проект безопасности, где в основном у меня есть сущности пользователя и роли. У меня есть набор ролей «АДМИН» и «ПОЛЬЗОВАТЕЛЬ».
Теперь я хочу назначить только роль «ПОЛЬЗОВАТЕЛЬ» вместе с созданием нового пользователя.
Я пытался использовать Список и коллекции с той же проблемой.
Сущность пользователя имеет 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.setRoles(new HashSet<>(roleRepository.findByRole(2)));
, а также попытался user.setRoles(new HashSet<>(roleRepository.findByID(2)));
с этой ошибкой: Невозможно определить аргументы типа для HashSet <>.
Таблица ролей в моей базе данных:
role_id role
1 ADMIN
2 USER