java - 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 ...
我该如何解决这个问题?- 谢谢
解决方案
您可以通过设置让 Envers 记录实体的版本org.hibernate.envers.do_not_audit_optimistic_locking_field
列false
然后在事务之后使用该列和实体的版本属性的值来检索修订。
推荐阅读
- bash - 在 shell 脚本 bash 中获取一天的结束时间
- kotlin - RxJava2如何将2个单列表加入一个列表
- c# - 设置拆分视图控制器 Xamarin.iOS
- php - 如何使用stripe api汇款到其他人的银行账户
- ruby-on-rails - 无法弄清楚如何在 Rails 应用程序中添加多态标签
- node.js - PhantomJS - 在后续请求中存储并包含 ETag
- java - 将数据结果从 MySQL 发布到 JTextArea
- angular5 - 将 Polymer 3 组件导入 Angular 5 项目
- php - ODBC_result_all 打印错误
- php - 如何在 Mac OS High Sierra 上安装 php-memcached 扩展