Hibernate Envers:从审计表中删除修订条目

问题描述

我目前正在使用 Hibernate Envers 和 Spring Data,当相应的实体被删除时,我试图删除审计表中的条目。我知道这不是 Envers 的常见用例,但我的项目需要这种行为。

但是,当我尝试删除实体和修订条目时,会在 revinfo 和 _aud 表中插入一个新的删除条目。似乎 envers 在删除相应的修订条目后收到实体的删除事件。有没有人知道如何解决这个问题?

服务:

@Transactional
public void delete(UUID personId) {

    ...
    
    final Person person= findById(personId);

    removeExistingReferences(person);

    personRepository.deleteById(personId);

    ...

    personRepository.deleteRevInfo(revId);
}

存储库:

   @Repository
   public interface PersonRepository extends RevisionRepository<Person,UUID,Integer>,JpaRepository<Person,UUID> {
      ...
      @Modifying()
      @Query(value = "DELETE FROM revinfo WHERE rev = :id",nativeQuery = true)
      void deleteRevInfo(@Param("id") Integer id);
}

日志:

Hibernate: delete from person where id=?
Hibernate: DELETE FROM person_aud WHERE id = ?
Hibernate: DELETE FROM revinfo WHERE rev = ?
Hibernate: select nextval ('hibernate_sequence')
Hibernate: insert into revinfo (revtstmp,rev) values (?,?)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...