创建新用户时如何设置角色?

时间:2018-11-13 14:33:33

标签: java spring rest

我在Spring中有一个简单的应用程序,我想实现在创建新用户时设置角色的方法。所以这是我的代码。我该如何赋予Set方法给最后一个方法?

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 :(得分:1)

您可以将Java 8 Stream作为波纹管使用:

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

newUser.setRoles(roles);