首页 > 解决方案 > 作为参数的角色列表

问题描述

我想将角色分配给一个新用户,该角色在数据库中称为 ROLE_USER,ID 为 3。但我不知道如何在方法 save() 中传递该值。在底部,我抛出了最重要的类和保存方法。

用户模型类

@Entity
@Table(name = "users")
public class User {

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

    @Column(nullable = false)
    private String firstName;

    @Column(nullable = false)
    private String lastName;

    @Column(nullable = false, unique = true)
    private String email;

    @Column(nullable = false)
    private String password;

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            name = "user_role",
            joinColumns = {@JoinColumn(name = "USER_ID", referencedColumnName = "ID")},
            inverseJoinColumns = {@JoinColumn(name = "ROLE_ID", referencedColumnName = "ID")})
    private List<Role> roles;

    public User(String firstName, String lastName, String email, String password, List<Role> roles) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.password = password;
        this.roles = roles;
    }
Getters and setters ...

榜样班

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

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column(unique = true)
    @NotNull
    private String name;

    @ManyToMany(mappedBy="roles")
    private List<Role> users;
}

UserRegistrationDto 类

 public class UserRegistrationDto {
 
     private String firstName;
     private String lastName;
     private String email;
     private String password;
     private List<Role> roles;
 }

UserService 类中的保存方法

public User save(UserRegistrationDto registrationDto) {

    User user = new User(registrationDto.getFirstName(),
            registrationDto.getLastName(), 
            registrationDto.getEmail(),
            passwordEncoder.encode(registrationDto.getPassword()), 
            ROLE ???);

    return userRepository.save(user);
}

标签: javahibernate

解决方案


推荐阅读