Отвязать зависимый объект hibernate от главного, не удаляя его из базы
Я работаю с объектами модификаторов блюд в ресторане (modification) и объектами самих блюд (products). Кроме этого, у модификаторов и у блюд есть категории (group_products). Мне нужно сделать так, чтобы на фронте можно было модификаторам задавать несколько категорий, а также удалять категории у модификатора. Здесь очевидная связь многие-ко-многим: много модификаторов могут относиться к одной категории, и один модификатор может иметь много категорий (например, один соус относится и к пиццам и к суши).
Вот так определены сущности:
@Entity
@Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class Modification {
@Id
@EqualsAndHashCode.Include
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "modification_group",
joinColumns = @JoinColumn(name = "modification_id"),
inverseJoinColumns = @JoinColumn(name = "group_id"))
private Set<GroupProducts> groupProducts;
}
@Entity
@Cacheable(cacheNames = "GroupProducts")
public class GroupProducts {
@Getter
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToMany(mappedBy = "groupProducts")
private List<Modification> modifications;
}
Мне нужно, чтобы можно было удалять категорию у модификатора так, чтобы при этом сама категория оставалась в базе. При текущей реализации, похоже, если я удалю одну категорию из списка категорий модификатора, то она удалится и из таблицы категорий. Меня такое поведение не устраивает. Надо просто как-то отвязать категорию от модификатора, но чтобы она осталась в базе. Как это можно реализовать?