2008-09-26 75 views
2

有沒有辦法在會話工廠(配置)級別添加單個標準,這將適用於全部 entites用ret會議? 我們有一個要求,不要從我們的數據庫中刪除任何行,但要「標記」刪除的實體,以便它們不會參與任何進一步的操作。休眠全球過濾標準

我知道我們可以通過一個通用接口(例如一個共同的基礎Dao對象)來檢索所有的實體,但是採用全局過濾的方法不太容易出錯,因爲它不需要使用這個常見的知識接口。

回答

2

The Hibernate Documentation詳細闡述了這一點。它看起來像處理這個最好的方法是過濾器。

首先,你在一個類或者集合定義fitler像這樣:

<filter-def name="IsDeletedFilter"> 
    <filter-param name="IsDeleted" type="bool"/> 
</filter-def> 

然後你把它連接到一個類或者集合:

<class/set ...> 
... 
<filter name="IsDeletedFilter" condition=":IsDeleted = Is_Deleted"/> 

唉,你必須對每個你想要軟刪除的課程做這個。但是你可能能夠映射出一個基類SoftDeleteEntity並且每個子類層次結構都有一個表。

我也看到一些人聲稱能夠與聽衆做到這一點,但我不知道如何。