我们在应用中使用java + hib。一个表有一列来指示记录是不可变的还是可变的。具有不可变标志的记录通过应用部署过程使用SQl插入到表中。
应用程序使用休眠会话在表中保存/删除/更新实体。我们希望休眠不会对带有不可变标志的记录执行任何操作。
如何基于字段值标记记录不可变?如何防止Hibernate基于字段值更新/保存/删除实体?
我们尝试使用休眠拦截器,但失败了:
1.从onSave、onDelete引发异常:事务已回滚
1.当实体具有不可变标志时为空:实体被删除了。
也想用Javabean的setter,但是它可以停止更新,但是不能防止删除。我们不想把hacky代码放在setter中,也不想放在service中来实现它。我们想找到一种方法来使用JPA/Hibernate提供的功能来实现它。
1条答案
按热度按时间bvn4nwqk1#
您可以通过在列上包含where子句 predicate 来更改
@SQLUpdate
和@SQLDelete
实体所使用的update
和delete
语句。