我想手动更新AUD表的记录,该记录由Hibernate Envers在同一事务中生成和填充。 遗憾的是,我没有发现可以听的JPA或Envers事件,我在提交JPA事务之前就已经对了,但是AUD表已经被填充。
你知道我该怎么做吗?
我正在使用Spring Boot 2.0.2,Hibernate 5.2.17,Envers 5.2.16
可以从org.hibernate.EmptyInterceptor
扩展并覆盖方法beforeTransactionCompletion
。在Spring Boot的application.properties
中,您必须向
spring.jpa.properties.hibernate.ejb.interceptor=com.example.CustomInterceptor
缺点:您失去了与已审计实体的连接。在这种方法中,您只能使用休眠事务。
扩展org.hibernate.envers.strategy.DefaultAuditStrategy
,覆盖perform
方法并修改data
-Array。该数组未绑定到JPA,因此可以在JPA未知的列中插入其他数据。
在application.properties中注册自定义AuditStrategy
spring.jpa.properties.org.hibernate.envers.audit_strategy=com.example.CustomAuditStrategy
答案 0 :(得分:0)
自Hibernate版本5.4.0起已解决此问题。现在,AuditStrategies更加灵活和模块化。