我在一个session的事务中,先通过merge保存一个对象,然后通过query将其查询出来,但是这个时候,好像查出来的对象值还是老的。
改成下面的过程后,就好了
merge后flush,然后在query出来就好了。这个是为什么。

解决方案 »

  1.   

    老数据,你调用session or update的时候没有马上提交业务来更改数据库(数据还在Session缓存里面),而是执行查询Query所以查到的应该是没有更新的数据,你通过先flush方法可以立即写入数据库,而不用调用业务提交commit()..
      

  2.   


    我现在是通过flush来解决这个问题的。但是我又做了个例子,和这个情况又不一样,不用flush也能查到更改的结果。
    现在还在进一步确认中
      

  3.   

    Query的后台到底是如何运作的呢 ?????????