提问者:小点点

Spring Boot和Hibernate Envers:手动更新AUD-Table


我想手动更新由Hibernate Envers在同一事务中生成和填充的AUD表的记录。可悲的是,我没有发现我可以监听的JPA或Envers事件,我就在提交JPA事务之前,但AUD表已经填充了。

你知道我是怎么做到的吗?

我正在使用Spring Boot 2.0.2、Hibernate 5.2.17、Envers 5.2.16

可以从org. hibernate.CountyInterceptor扩展并覆盖方法。在Spring Boot的application.properties中,您必须注册自定义拦截器

spring.jpa.properties.hibernate.ejb.interceptor=com.example.CustomInterceptor

缺点:您失去了与被审计实体的连接。在这种方法中,您只能使用Hibernate事务。

扩展org. hibernate.envers.策略.DefaultAuditStrategy,覆盖执行-method并修改data-Array。这个数组没有绑定到JPA,所以可以在JPA未知的列中插入额外的数据。

在application.properties中注册您的自定义AuditStrategy

spring.jpa.properties.org.hibernate.envers.audit_strategy=com.example.CustomAuditStrategy

共1个答案

匿名用户

此问题自Hibernate版本5.4.0以来已修复。现在Audit策略更加灵活和模块化。

参见:https://hibernate.atlassian.net/browse/HHH-13051