我有一个使用hibernate的spring应用程序。我已经实现了envers到它中,这是很好的工作。但是,默认情况下,hibernate将在提交某些事务之前自动刷新。
例如,我有一个mvc端点,它将更新一个记录,但是在保存它之前,必须进行各种其他查询以检索其他数据。每次运行另一个查询时,hibernate都会刷新,这会导致每个更改都有多个审核行。这会造成一些混乱,因为我的记录上已经有一个修改过的日期,但在每次更新中都没有更改(因为它在更改此属性之前正在刷新)。
我有什么办法可以更有效地管理这个问题,并创建一个可靠的审计日志,即使是用这种方式进行hibernate刷新?实现我自己的监听器的唯一答案是使用一些自定义逻辑来检查它是否应该提交审核更改?
1条答案
按热度按时间yptwkmov1#
完成后,可以分离实体并合并。只有当这些查询接触到可能受挂起的插入/更新/删除影响的表时,才会执行这些查询。如果使用本机查询,则这是另一个主题。hibernate没有sql解析器来确定您正在接触哪些表,因此它是保守的,并刷新所有挂起的更改。