中间交易选择。如何将过程更改包含在那些SELECT中?

时间:2014-01-06 15:17:28

标签: java spring oracle hibernate

是否可以从存储过程已修改的表中选择一条记录,并在同一SQL事务中以未提交状态检索它?

分解......

  1. 开始交易。
  2. 检索记录A.存储在对象1中。
  3. 执行修改记录A的SP。
  4. 检索记录A.存储在对象2中。
  5. 结束交易。
  6. 结果 - 对象#1和#2是相同的。我希望他们与众不同。对象#2包括执行发生在修改后的记录A中的存储过程的更改。


    修改

    我进一步缩小了范围。在第4步,我正在进行两次调用以检索记录A:

    • createSQLQuery - >打印结果 - >显示步骤3中的正确数据。
    • createQuery - >打印结果 - >显示步骤3中的陈旧数据。

    我现在的猜测是,Hibernate的第一级查询缓存持有记录A,只是将它还给我而不是执行另一个SELECT。 我不确定解决此问题的最佳方法。

1 个答案:

答案 0 :(得分:1)

执行存储过程后,需要clear() hibernate会话强制从数据库中检索更新的数据。