我的应用程序使用FlushMode.AUTO
。
对于特定的服务方法调用,我想将Hibernate Session。FlushMode
更改为FlushMode.COMMIT
,并在方法完成时恢复为FlushMode.AUTO
。
问题: - 在会话期间更改FlushMode是否存在任何问题/危险?
会话期间更改FlushMode的原因: -
我正在使用Hibernate拦截器方法(onFlushDirty
)来审核更改。
使用FlushMode.AUTO,发生多个会话刷新(FlushMode.AUTO
的行为)。因此,多次调用onFlushDirty
会导致重复审核。
我在上述问题的方法中将FlushMode
更改为COMMIT
,解决了上述问题。
答案 0 :(得分:0)
触发自动刷新的最常见原因是在执行过程中使用执行查询。如果Hibernate检测到会话中的某些非刷新更改可能会影响查询结果,则会自动触发刷新。因此,当您的查询执行时,它会获得与您在会话中所做的更改一致的数据。
因此,这取决于您的代码的作用。如果此行为不影响功能,则应该没问题。