2013-02-15 66 views
1

我使用Hibernate來管理我的Java應用程序中的持久性。我在A方定義的實體A和B之間有一個ManyToMany關係(A有一個Bs集合)。Hibernate JoinTable

當我從表B中刪除一個對象時,我希望它也可以從實體A中的集合中刪除。但是,我無法找到如何在Hibernate中定義JoinTable中的外鍵必須是「關於刪除級聯」。

如果有人能幫助我,我將不勝感激。

編輯:代碼示例:

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」:

@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是由以下命令創建爲bfk上的外鍵。

+0

請張貼相關的代碼 - 這使得它更容易發現 – kostja 2013-02-15 13:01:46

+0

增加了一些問題相關的代碼:) – user1544745 2013-02-15 14:34:20

回答

1

註釋 @Cascade(CascadeType.DELETE)

XML映射文件 級聯=「刪除」爲您收集

+0

謝謝你的回答,我試過這個,但它沒有達到預期的效果。我想要的是在JoinTable上有「ON DELETE CASCADE」。 – user1544745 2013-02-15 14:36:12