DAO层有一个方法.内容是getHibernateTemplate().update(userInfo);
有的时候可以更新,有的时候不能更新,需要flush().
这是为什么?

解决方案 »

  1.   

    代码就一句话 return getHibernateTemplate().update(userInfo);
    有时候就不能更新, 需要添加一行flush(),才会更新.
      

  2.   

    这跟线程有关系,应该是spring使用是ThreadLocal  ,一个线程对应一个session,可能是你在同个线程下多次调用 了update,update操作的是游离状态,而出问题的情况下应该是你的session里面已经有一个持久态的userInfo,而更新持久态是要用flush
    你是不是配置了OpenSessionInViewFilter
      

  3.   

    那你就要去了解一下hibernate的缓存机制了。第一次你查询的时候,他是从数据库里查询,当你第二次一样查询的时候他就不会去查数据库了,而是直接从缓存中拿数据了。
      

  4.   

    所以flush()就是刷新缓存……