首页 > 解决方案 > Hibernate Envers 和 Hibernate Auto Flush

问题描述

我有一个使用 Hibernate 的 Spring 应用程序。我已经在其中实现了 Envers,效果很好。但是,默认情况下,Hibernate 会在某些事务提交之前自动刷新。

例如,我有一个 MVC 端点,它将更新一条记录,但在保存它之前,必须进行各种其他查询以检索其他一些数据。每次运行另一个查询时,Hibernate 都会刷新,这会导致每次更改都有多个审计行。这会造成一些混乱,因为我的记录中已经有一个修改日期,每次更新都没有更改(因为在更改此属性之前它正在刷新)。

我有哪些选择可以更有效地管理这个问题,并且即使以这种方式使用 Hibernate 刷新也可以创建可靠的审计日志?用一些自定义逻辑来实现我自己的监听器以检查它是否真的应该提交审计更改的唯一答案是什么?

标签: javaspringhibernatehibernate-envers

解决方案


完成后,您可以分离实体并合并。这些查询仅在它们触及受挂起的插入/更新/删除影响的表时才会执行。如果您使用本机查询,这是一个不同的主题。Hibernate 没有 SQL 解析器来确定您正在触摸哪些表,因此它是保守的并刷新所有未决的更改。


推荐阅读