Код: Выделить всё
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", nullable = false)
private String password;
@OneToMany(mappedBy = "userId", cascade = CascadeType.ALL)
private List roles;
public User() {}
public User(Long id, String username, String password, List roles) {
this.id = id;
this.username = username;
this.password = password;
this.roles = roles;
}
public User(Long id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
}
Код: Выделить всё
@Entity
@Table(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", referencedColumnName = "id", nullable = false)
private User userId;
@Column(name = "role_name", nullable = false)
private String roleName;
public Role() {}
public Role(Long id, User userId, String roleName) {
this.id = id;
this.userId = userId;
this.roleName = roleName;
}
}
Код: Выделить всё
userRepository.save(new User(existingId, newUsername, newPassword, newRoles));
Проще говоря, я хочу, чтобы при ОБНОВЛЕНИИ данных пользователя новые роли удаляться и заменяться новыми.
Можно ли добиться такого эффекта, например, изменив CascadeType или другие простые элегантные методы?
Подробнее здесь: https://stackoverflow.com/questions/783 ... e-database