我在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()
中输入什么
答案 0 :(得分:1)
您可以将Java 8 Stream作为波纹管使用:
Set<Role> roles = Stream.of(userRole)
.collect(Collectors.toCollection(HashSet::new));
newUser.setRoles(roles);