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