2010-11-08 64 views
0

如何限制域限制數據的更新?Hibernate過濾器的更新?

比方說,我有我的休眠應用程序,它允許查看特定國家的所有合同的用戶(即過濾:國家=「美國」)

我怎麼能保證,該用戶只能插入國家='美國'的新記錄?

有沒有像'過濾器來限制更新語句'在休眠?

回答

1

你可以通過實現PreUpdateListener/PreInsertListener在休眠層做到這一點,否決了更新,但是這很可能是過度殺死在大多數情況下。

我只會這樣做,如果這對於安全原因至關重要,並且除了之外還有驗證邏輯更接近視圖或控制器層。您沒有提及這是什麼類型的應用程序,但幾乎所有UI框架(Web,桌面或移動設備)都具有驗證支持,這將使處理這類邏輯更爲方便(而不是處理來自持久層的異常)。

1

一種選擇是處理支票在你的DAO例如:

public void saveContract(Contract contract, String countryCode) { 

    if (contract.getCountryCode().equals(countryCode)) { 
    threw InvalidContractException 
    } else { 
    saveContract(contract) } 

    private void saveContract(Contract contract) 

我不認爲它可以通過聲明進行檢查。

如果用戶在數據庫級別進行身份驗證,即。每個應用。用戶有它自己的數據庫用戶,那麼你可以創建一個表

DB_USER,CTRY

和使用是指在該表在合同中映射?!

,或者您可以使用虛擬專用數據庫