【问题标题】:Hibernate original state in MergeEventListener在 MergeEventListener 中休眠原始状态
【发布时间】:2014-03-26 08:00:33
【问题描述】:

我正在尝试为我的表的插入、删除和更改创建一个简单的更改日志。

我正在使用 hibernate 的 HibernateEventListener 类以及 SaveOrUpdateEventListener 和 DeleteEventListener。

这对于保存和删除非常有用。我想展示新旧状态的变化。所以我遵循相同的模式并创建了一个 MergeEventListener。

我的问题是原始值始终为空。我尝试了 PreUpdateListener 并得到了相同的结果。

根据休眠文档,原始对象将是空的对象被分离。

我的对象将始终根据当前架构分离:

  1. 打开一个会话获取一个对象
  2. 将对象放入表单支持 bean
  3. 向用户显示表单
  4. 在保存或更新时点击
  5. 打开新会话并更新对象

我想知道是否有任何方法可以获得对象的预更新状态。在合并或更新前事件发生之前,我的分离对象在控制器中更新。

任何想法或提示将不胜感激。

谢谢

【问题讨论】:

    标签: java spring hibernate persistence updates


    【解决方案1】:

    如果您的数据库支持触发器,那么这可以在触发器中实现。

    在触发的情况下,会话没有问题 - 您始终可以使用 OLD 和 NEW 值进行更新。

    维基百科条目提供了有关解决方案的更多详细信息:http://en.wikipedia.org/wiki/Log_trigger

    【讨论】:

      【解决方案2】:

      我能够使用 PreUpdateEventListener 解决这个问题。

      我查看了我的 Hibernate Dao 对象,特别是更新调用。我正在使用更新,它将被分离并在 oldState 属性中具有 null。

      我将调用切换到合并,现在 oldState 属性总是被填充。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-30
        • 2011-07-20
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        • 2020-09-01
        • 1970-01-01
        相关资源
        最近更新 更多