[英]Hibernate: How to make Hibernate delete records from child table when deleting parent if child is linked to parent with many-to-one?
讓我們說我有兩個表 - “孩子”和“父母”有多對一的關系。 如果父記錄被刪除,我需要刪除子條目。
如果我通過在parent.hbm中創建一對多關聯並設置cascade =“all-delete-orphan”來鏈接子表,則不會出現問題。
問題是我不希望在父方面有一對多關系,所以我在子方面創建了多對一關系。 原因是子表非常大,我不想每次使用父表時提取數百條記錄。 所以我的配置如下所示:
child.hbm:
<many-to-one name="parent" class="com.example.Parent" column="parentid"/>
而parent.hbm與child沒有關聯。
問題是: 如果子項鏈接到具有多對一的父項,如何在刪除父項時從子表中刪除Hibernate記錄?
謝謝。
幾種選擇:
使用級聯刪除將一對多添加到父級,但使用延遲加載可以減輕性能損失。
使用Hibernate Interceptor (或AOP環境中的一個方面)來檢測父記錄刪除和刪除子項。
我個人贊成第一個選項,因為它可以讓您的數據模型更接近地反映數據中的真實關系。
編輯:有第三個選項,但它不愉快 - 使用數據庫觸發器,並刷新您的Hibernate緩存(或使用非緩存會話)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.