hibernate級聯刪除 – JAVA編程語言程序開發技術文章

比如有下面四個表:

A(id, name)  
AA(id, name, a_id)  
B(id, name, a_id)  
BB(id, name, b_id) 
假設它們之間的關系是:

A:AA=one-to-many  
A:B=one-to-one(外鍵定義one-to-one關系)  
B:BB= one-to-many 
A.hbm.xml

…  
<set name="aaSet" lazy="true" inverse="true"  
        cascade="all-delete-orphan">  
    <key column="A_ID" not-null="true" />  
    <one-to-many class="AA" />  
</set>  
<one-to-one name="b"  
    class="B"  
    property-ref="aid"></one-to-one>  
… 
B.hbm.xml

<set name="bbSet" lazy="true" inverse="true"  
        cascade="all-delete-orphan" >  
    <key column="B_ID" not-null="true" />  
    <one-to-many class="BB" />  
</set> 
代碼:

A a = …;  
session.getTransaction().begin();  
session.delete(a);  
session.getTransaction().commit(); 
這樣,就會把AA,B,BB裡相關數據自動刪除。

說明:
 
設置Hibernate級聯刪除,隻需:
 
1.在父端的one-to-one/many-to-one關系:設置cascade=”delete”或cascade=”all”。

2.在父端的one-to-many關系(map, set, list, bag):設置cascade=”all-delete-orphan”或cascade=”all”。
即可。

作者:woshiyjk

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。