1
我目前有一個實體,其上設置了where子句。我想把這個where子句放在一個過濾器上,並默認打開(這樣我就不會破壞任何現有的功能)。默認情況下,您如何爲特定實體啓用休眠過濾器?
我想把它變成一個過濾器,以便我可以禁用它,因爲我有一個用例,我需要它禁用。
我該如何做到這一點在休眠3.1.3?
我目前有一個實體,其上設置了where子句。我想把這個where子句放在一個過濾器上,並默認打開(這樣我就不會破壞任何現有的功能)。默認情況下,您如何爲特定實體啓用休眠過濾器?
我想把它變成一個過濾器,以便我可以禁用它,因爲我有一個用例,我需要它禁用。
我該如何做到這一點在休眠3.1.3?
Hibernate文檔似乎聲明過濾器(類似於SQL視圖)是查看數據的可選方式,並不代表查看它的「默認」方式。我的建議是堅持使用where子句,併爲不希望過濾數據的用例編寫一個特殊的訪問程序。
我想另一種實現你所要求的方法是在你的「HibernateUtil」類中封裝啓用你的過濾器(假設你有這樣一個負責打開你的代碼使用的新會話的野獸) 。默認情況下,獲取新會話的方法將實例化會話,然後在返回之前啓用該過濾器。例如:
public Session newSession(){
Session session = sessionFactory.openSession();
// this assumes you don't have criteria to set depending on the context
session.enableFilter("yourFilter");
return session;
}
然後在您的具體使用情況下,您可以disableFilter("yourFilter");
。