Связи в БД Hibernate
Пишу обычное CRUD приложение. У меня вопрос по связям и удалениям. Есть один класс WorkExperience
@Entity
@Data
public class WorkExperience {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String company;
private String jobTitle;
@Column(nullable = false)
@JsonFormat(pattern = "dd-MM-yyyy")
private LocalDate dateStart;
@Column(nullable = false)
@JsonFormat(pattern = "dd-MM-yyyy")
private LocalDate dateFinish;
@Column(nullable = false)
private String description;
@ManyToOne
@JoinColumn(name = "profile_id")
private Profile profile;
@ManyToMany
@JoinTable(
name = "work_experience_primary_skills",
joinColumns = @JoinColumn(name = "work_experience_id"),
inverseJoinColumns = @JoinColumn(name = "node_id")
)
private Set<Node> primarySkills = new HashSet<>();
@ManyToMany
@JoinTable(
name = "work_experience_secondary_skills",
joinColumns = @JoinColumn(name = "work_experience_id"),
inverseJoinColumns = @JoinColumn(name = "node_id")
private Set<Node> secondarySkills = new HashSet<>();}
И вторая модель Node - грубо говоря список скиллов ( джава, питон,sql и т.д.)
@Entity
@Data
public class Node {
@Id
@SequenceGenerator(name = "node_seq2",
sequenceName = "node_sequence2",
initialValue = 1, allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "node_seq2")
private Long id;
@Column(nullable = false)
private String title;
@Column(nullable = false, unique = true)
private String slug;
@ManyToMany(mappedBy = "knowledge", cascade = CascadeType.ALL)
private Set<Profile> profiles = new HashSet<>();
@ManyToMany(mappedBy = "primarySkills", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
private Set<WorkExperience> primarySkillExperiences = new HashSet<>();
@ManyToMany(mappedBy = "secondarySkills", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}
private Set<WorkExperience> secondarySkillExperiences = new HashSet<>();}
Я не могу сделать удаление Node какого-то. Я хочу удалить его запросом, условно и чтобы пропала связь его с WorkExperience. То есть была ( джава, питон, с#) у WorkExperience, а после удаления джавы остался (питон, с#). Я как только не пробовал, но выбивает ошибку
DataIntegrityViolationException: ОШИБКА: UPDATE или DELETE в таблице "node" нарушает ограничение внешнего ключа "fkat34t854bn7n6mxm03u1nrary" таблицы "work_experience_primary_skills" Подробности: На ключ (id)=(16) всё ещё есть ссылки в таблице "work_experience_primary_skills". Как удалить?