我有一些 bean 方法会导致不需要的数据库更新。我只执行选择语句并根据需要重新计算某些字段的值,但不希望它自动更新。如何在不干预默认应用程序设置的情况下控制此过程?
日志文件讲述了一些神秘的后台刷新过程:
begin unit of work flush
Execute query UpdateObjectQuery ...
我可以避免这种更新使 em.setFlushMode(FlushModeType.COMMIT); 在我的方法中。这在我的机器上真的很奇怪,这可以正常工作 - 在方法执行期间和之后没有更新。但在客户端机器上,我还需要恢复事务——仅在这种情况下,我的日志中看不到任何更新语句。但是这种治疗方法正确吗?当我在我的 bean 方法中更改 EM 的 FlushMode 时,其他线程会执行自动提交吗?
我的机器(GlassFish 2.0、Ubuntu 12.10、eclipcelink 3.2、jdk 1.7.0_15)
客户端机器(GlassFish 2.0、Win 7 x86_64、eclipcelink 3.2、jdk 1.7.0_15)