Я использую Hibernate для управления сохранением в своем приложении Java. Я получил отношение ManyToMany между объектами A и B, которые определены на стороне A (A имеет набор Bs).Hibernate JoinTable
Когда я удаляю объект из таблицы B, я хочу, чтобы он также удалялся из коллекции в сущности A. Однако я не могу узнать, как определить в Hibernate, что внешний ключ в JoinTable должен быть «при удалении каскада».
Буду признателен, если кто-то может мне помочь.
EDIT: пример кода:
@Entity
public class A {
@ManyToMany
@JoinTable(name = "aToB", joinColumns = { @JoinColumn(name = "aFk") }, inverseJoinColumns = { @JoinColumn(name = "bFk") })
public Collection<B> getBs() { ... }
public void setBs(Collection<B> bs) { ... }
}
Когда я смотрю в моей базе данных, таблица aToB была создана следующей командой:
CREATE TABLE aToB
(
afk integer NOT NULL,
bfk integer NOT NULL,
CONSTRAINT aToB_pkey PRIMARY KEY (afk , bfk),
CONSTRAINT fk156d338f71d2c983 FOREIGN KEY (afk)
REFERENCES a (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk156d338fa35ac77c FOREIGN KEY (bfk)
REFERENCES b (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
, что я на самом деле, что это есть "ON DELETE CASCADE" для внешнего ключа на bfk.
пожалуйста, напишите соответствующий код - это делает его гораздо легче обнаружить проблему – kostja
добавил некоторые соответствующий код :) – user1544745