2013-02-15 4 views
1

Я использую 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.

+0

пожалуйста, напишите соответствующий код - это делает его гораздо легче обнаружить проблему – kostja

+0

добавил некоторые соответствующий код :) – user1544745

ответ

1

Аннотация @Cascade (CascadeType.DELETE)

XML файла отображение каскадных = «удалить» для вашей коллекции

+0

Спасибо за ваш ответ, я пробовал это, однако он не имел желаемого эффекта. Я хочу, чтобы «ON DELETE CASCADE» на JoinTable. – user1544745

Смежные вопросы