我有两个实体,user和movies。他们有很多的双向关系。我的问题是,当我通过我的控制器删除一部电影时,它也会删除所有与该电影实体相关的内容。我的用户和此用户角色以及电影实体。我该怎么做,当删除电影实体时,从表中删除它,并保留用户的角色,而不是全部删除它们。
@Data
@ToString
@EqualsAndHashCode
@Entity
@Table(name = "movies")
public class Movie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "title")
private String title;
@Column(name = "description")
private String description;
@Column(name = "release_date")
@Temporal(TemporalType.DATE)
private Date release_date;
@Column(name = "country")
private String country;
@Column(name = "category")
private String category;
@ManyToMany(mappedBy = "movies")
@ToString.Exclude
@EqualsAndHashCode.Exclude
private Set<User> users = new HashSet<>();
@Data
@ToString
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Transient
private String confirmPassword;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "users_roles", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id")})
@ToString.Exclude
@EqualsAndHashCode.Exclude
private Set<Role> roles = new HashSet<>();
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "users_movies", joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "movie_id", referencedColumnName = "id")})
@ToString.Exclude
@EqualsAndHashCode.Exclude
private Set<Movie> movies = new HashSet<>();
https://stackoverflow.com/questions/56692623
复制相似问题