我正在尝试创建一个简单的更改日志,用于对表进行插入、删除和更改。
我正在使用 hibernate 的 HibernateEventListener 类以及 SaveOrUpdateEventListener 和 DeleteEventListener。
这对于保存和删除非常有效。我想展示新的和旧的变化状态。因此,我遵循相同的模式并创建了一个 MergeEventListener。
我的问题是原始值始终为空。我尝试了 PreUpdateListener 并得到了相同的结果。
根据 hibernate 文档,如果对象被分离,原始对象将为 null。
我的对象将始终根据当前架构分离:
- 打开一个 session 获取一个对象
- 将对象放入表单支持 bean
- 向用户显示表单
- 点击“保存”或“更新”
- 打开新 session 并更新对象
我想知道是否有任何方法可以获得对象的预更新状态。在合并或预更新事件发生之前,我的分离对象已在 Controller 中更新。
任何想法或提示,我们将不胜感激。
谢谢
最佳答案
如果您的数据库支持触发器,那么这可以在触发器中实现。
如果触发, session 不会出现问题 - 您始终可以使用旧值和新值进行更新。
维基百科条目提供了有关该解决方案的更多详细信息:http://en.wikipedia.org/wiki/Log_trigger
关于java - MergeEventListener 中的 Hibernate 原始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991456/