首页 > 解决方案 > Hibernate envers 获取已删除的行数据

问题描述

在我的应用程序中,我需要显示删除了哪些行。我需要找到特定类的已删除行详细信息。

到目前为止,我得到了一个返回已删除实体 ID 的查询,如何获取所有实体字段?

final AuditQuery query = auditReader.createQuery().forRevisionsOfEntity(Partner.class, false, true);
query.add(AuditEntity.revisionType().eq(RevisionType.DEL));
final List<?> results = query.getResultList();

标签: hibernatehibernate-envers

解决方案


您拥有的查询就是您想要的,但问题是默认情况下,Envers 在删除记录时不会捕获实体的状态。默认情况下捕获的唯一信息是实体的修订、修订类型和主键值。

您需要在休眠配置中设置org.hibernate.envers.store_data_at_deletetrue,这样它不仅可以存储我上面提到的实体的值,还可以存储所有审计字段。这将允许您使用的查询返回一个实体实例,其中所有审计字段都根据删除前实体的外观填充。


推荐阅读