0

我目前正在使用 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 (?, ?)
4

0 回答 0