java - MergeEventListener 中的 Hibernate 原始状态

标签 java spring hibernate persistence updates

我正在尝试创建一个简单的更改日志,用于对表进行插入、删除和更改。

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

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

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

根据 hibernate 文档,如果对象被分离,原始对象将为 null。

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

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

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

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

谢谢

最佳答案

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

如果触发, session 不会出现问题 - 您始终可以使用旧值和新值进行更新。

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

关于java - MergeEventListener 中的 Hibernate 原始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991456/

相关文章:

hibernate - 在 grails 中获取分离的域实体

java - GWT 单元表。沿行文本

java - Spring Rest `@Controller` 扭曲行为

java - Hibernate 的 NamedQueries 问题

java - 在maven pom中为每个依赖定义具体的JDK版本

java - spring 集成中的运行时可配置动态路由

java - 启动 ApplicationContext 时出错。要显示条件报告,请在启用 'debug' 的情况下重新运行应用程序

java - 使用 Java Streams 的笛卡尔积

java - 如果调试行为与正常执行不同,该怎么办?

rest - 马克逻辑 : JAVA API - Dynamic Database and REST Server