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

我在 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;

    }

}

角色名称枚举


    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()


扬帆大鱼
浏览 294回答 1
1回答

慕村9548890

您可以使用 java 8 的 Stream,如下所示:Set<Role> roles = Stream.of(userRole)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toCollection(HashSet::new));newUser.setRoles(roles);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java