Как удалить отношения от многих ко многим - hibernate - PullRequest
0 голосов
/ 28 мая 2020

У меня проблемы с каскадными типами, у меня 3 таблицы. 2, созданный мной, и таблица соединений создается через спящий режим. Вот мои таблицы:

активность

встреча

assign_activity

Моя проблема в том, что когда я пытаюсь удалить встречу или действие, это не происходит. разрешите. Столбец в объединенной таблице assign_activity также присутствует. Я знаю, что мне не следовало использовать Remove во многих отношениях, поэтому я не знаю, что делать, чтобы исправить проблему.

Мои два класса:

// activity class
public class Activity
{
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Column(name = "id") 
protected Long id;

 @NotNull 
@Column(unique = true) 
private String name;

 @JsonIgnore 
@ManyToMany(mappedBy = "activities",    
         cascade = { CascadeType.PERSIST, CascadeType.MERGE, 
CascadeType.REFRESH, CascadeType.DETACH}) 
private Set<Appointment> appointments;
}

// appointment class
public class Appointment
 { 
@Id
 @GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "id") 
protected Long id;

@NotNull
 private LocalDateTime startDate;

 @JsonIgnore @ManyToMany(fetch = FetchType.EAGER,   
          cascade = { CascadeType.PERSIST,CascadeType.MERGE,                     CascadeType.REFRESH,CascadeType.DETACH})

 @JoinTable(name = "appointment_activity",
 joinColumns = {@JoinColumn(name = "appointment_id")},         
 inverseJoinColumns = {@JoinColumn(name = "activity_id")} )
 private Set<Activity> activities;
}

Я знаю, что должен используйте что-то вроде этого: (получил его из другого вопроса о переполнении стека)

entityManager.remove(group)
for (User user : group.users) {
     user.groups.remove(group);
}
...
// then merge() and flush()

Но я не уверен, куда его поставить или как с ним работать, может кто-нибудь объяснить?

...