#java #hibernate
Вопрос:
Я хочу назначить роль новому пользователю, роль в базе данных называется ROLE_USER и имеет идентификатор 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;
}
Регистрация пользователя в классе
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);
}
Комментарии:
1. Ты не показал
Role
класс.2. добавлено @tgdavies
3. Кажется странным, что
Role
он содержитList<Role>
… и что он названusers
.4. правда, я изменил его, но все равно знаю, как назначить роль новому пользователю.