2012-09-04 117 views
0

我有兩個表(資源&標記)和第三個連接它們兩個(Resources_tags)。如何使用HQL查詢刪除具有多個標記的資源的多對多關係? 例如,我想要刪除Resources_tags表中資源所具有的所有標籤。在休眠(HQL)中刪除兩個表之間的關係

回答

0

如果您的兩個表格是「A」和「B」,那麼當您設置兩個表格時,您需要在表格「A」上指定「級聯」,即 。

這樣的:

<bag name="A" 
    inverse="true" 
    lazy="false" 
    cascade="all"> 
    <key column="SOME_ID"/> 
    ..... 

現在執行的任何刪除 「A」 應該有預期的效果。

+0

你能給我一個HQL查詢的例子嗎? – frikkio

+0

我的意思是「A'上的任何刪除」都是它不需要是HQL。這取決於你並由你的應用程序驅動。通常,Hibernate的想法是使用對象,因此有多種方法可以刪除。你可以說:sess.delete(myObjOfTypeA); – JoeG

+0

對不起,快速輸入我的錯誤!通常,對於描述的關係類型,您應該獲取對象列表,修改它(通過刪除項目)並保存列表。但是,您仍然可以通過HQL進行刪除: 查詢deleteExample = session.createQuery( 「從項目where itemType =?中刪除項目」); – JoeG