保持数据后,Hibernate Envers立即获得修订

时间:2018-10-09 20:09:05

标签: java hibernate spring-data-jpa spring-data hibernate-envers

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

换句话说:

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

第2步:return me the audit version just created

我已经采取了先保留数据的方法,然后通过单独的呼叫从审核表中检索最新版本信息。随着用户数量的增加,这最终将变得不一致。

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 ...

如何解决此问题? -谢谢

2 个答案:

答案 0 :(得分:1)

您可以通过设置org.hibernate.envers.do_not_audit_optimistic_locking_field to false

使Envers记录您实体的版本列

然后在交易后使用该列和实体的version属性值来检索修订。

答案 1 :(得分:0)

也许您可以使用ValidityAuditStrategy,可以对其进行检查here,这将使您知道您的最后一个有效条目,并在这种情况下获得了最新修订。