如何限制域限制数据的更新?Hibernate过滤器的更新?
比方说,我有我的休眠应用程序,它允许查看特定国家的所有合同的用户(即过滤:国家=“美国”)
我怎么能保证,该用户只能插入国家='美国'的新记录?
有没有像'过滤器来限制更新语句'在休眠?
如何限制域限制数据的更新?Hibernate过滤器的更新?
比方说,我有我的休眠应用程序,它允许查看特定国家的所有合同的用户(即过滤:国家=“美国”)
我怎么能保证,该用户只能插入国家='美国'的新记录?
有没有像'过滤器来限制更新语句'在休眠?
你可以通过实现PreUpdateListener/PreInsertListener在休眠层做到这一点,否决了更新,但是这很可能是过度杀死在大多数情况下。
我只会这样做,如果这对于安全原因至关重要,并且除了之外还有验证逻辑更接近视图或控制器层。您没有提及这是什么类型的应用程序,但几乎所有UI框架(Web,桌面或移动设备)都具有验证支持,这将使处理这类逻辑更为方便(而不是处理来自持久层的异常)。
一种选择是处理支票在你的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
和使用是指在该表在合同中映射?!
,或者您可以使用虚拟专用数据库