我正在使用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 ...
如何解决此问题? -谢谢
答案 0 :(得分:1)
您可以通过设置org.hibernate.envers.do_not_audit_optimistic_locking_field
to false
然后在交易后使用该列和实体的version属性值来检索修订。
答案 1 :(得分:0)
也许您可以使用ValidityAuditStrategy,可以对其进行检查here,这将使您知道您的最后一个有效条目,并在这种情况下获得了最新修订。