Как установить роль при создании нового пользователя? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть простое приложение в Spring, и я хочу реализовать метод, который устанавливает роль при создании нового пользователя. Так что это мой код. Как я должен назначить роли для последнего метода?

Role.java

@Entity
@Table(name = "roles")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Enumerated(EnumType.STRING)
    @NaturalId
    private RoleName name;

    public Role(){}

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public RoleName getName() {
        return name;
    }

    public void setName(RoleName name) {
        this.name = name;
    }
}

перечисление RoleName

    public enum RoleName {
    ROLE_USER,
    ROLE_ADMIN
}

Метод установки в User.java

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_roles",
        joinColumns = @JoinColumn(name = "user_id"),
        inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<>();

А как мне заполнить этот метод?

  public User addUser(User user) {
    Role userRole = roleRepository.findRoleByName(RoleName.ROLE_USER);
    User newUser = new User();
    newUser.setEmail(user.getEmail());
    newUser.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
    newUser.setUsername(user.getUsername());
    newUser.setFirstName(user.getFirstName());
    newUser.setLastName(user.getLastName());
    newUser.setRoles();
    return userRepository.save(newUser);
}

Я не знаю, что мне положить newUser.setRoles()

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете использовать поток Java 8, как показано ниже:

Set<Role> roles = Stream.of(userRole)
                        .collect(Collectors.toCollection(HashSet::new));

newUser.setRoles(roles);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...