2010-11-08 62 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

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

,或者您可以使用虚拟专用数据库