Hibernate Envers 将数据恢复到一个版本

Posted

技术标签:

【中文标题】Hibernate Envers 将数据恢复到一个版本【英文标题】:Hibernate Envers Revert data to a version 【发布时间】:2011-07-30 16:01:35 【问题描述】:

我们正在使用 Hibernate 环境来存储数据的历史修订,因此需要将数据恢复到某个修订。由于我们使用 Version 列来使用乐观锁定方法,当我尝试保存上一个版本的数据时,我得到一个 StaleObjectException。有什么方法可以强制 Hibernate 存储以前版本的数据?

【问题讨论】:

非常好的问题。你能告诉我们你是怎么做的吗?尝试加载修订然后保存?从修订版复制到实际对象? 我正在尝试使用 javax.persistence.EntityManager 的合并方法加载修订并保存它。 浏览博客。这可能会有所帮助。 encodo.com/en/blogs.php?entry_id=22 【参考方案1】:

这是一个很棒的问题。我在 envers 文档中没有找到类似的内容,但我确信这是一个常见问题。作为一种解决方法,您可以在所需的对象修订版上设置属性(例如在构造函数中)

【讨论】:

这是一个痛苦的解决方法,但看起来没有其他选择。

以上是关于Hibernate Envers 将数据恢复到一个版本的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate Envers @NotAudited 注解

将带有 java envers 的审计表移动到新的数据库实例

Hibernate envers如何向审计表添加字段

Hibernate Envers

Hibernate Envers - 在启动时填写审计表

Hibernate Envers - 获取已更改的字段