首页 > 解决方案 > Hibernate Envers 在持久化数据后立即获得修订

问题描述

我正在使用 Spring JPA 在我的应用程序中保留数据。我还使用 Hibernate Envers 为输入到核心表中的每条记录创建历史记录。我想在写入事务后立即获得修订,并向用户展示为他/她刚刚所做的更改创建了哪些修订。

换句话说:

步骤1:entity -- persisted --> entity table -- envers --> audit table

第2步:return me the audit version just created

我采取了先持久化数据的方法,然后在单独的调用中从审计表中检索最新的 rev 信息。随着用户数量的增加,这最终会变得不一致。

MyEntity mySavedEntity = myEntityRepository.save(myEntity);         
AuditReader reader = AuditReaderFactory.get(entityManager);
List<Number> revisions = reader.getRevisions(MyEntity .class, mySavedEntity.getId());

// ... get the latest revision and pass it back to the user ...

我该如何解决这个问题?- 谢谢

标签: javahibernatespring-data-jpaspring-datahibernate-envers

解决方案


您可以通过设置让 Envers 记录实体的版本org.hibernate.envers.do_not_audit_optimistic_locking_fieldfalse

然后在事务之后使用该列和实体的版本属性的值来检索修订。


推荐阅读