DAO层有一个方法.内容是getHibernateTemplate().update(userInfo);
有的时候可以更新,有的时候不能更新,需要flush().
这是为什么?
回答1.
这跟线程有关系,应该是spring使用是ThreadLocal ,一个线程对应一个session,可能是你在同个线程下多次调用 了update,update操作的是游离状态,而出问题的情况下应该是你的session里面已经有一个持久态的userInfo,而更新持久态是要用flush
回答2.
那你就要去了解一下hibernate的缓存机制了。第一次你查询的时候,他是从数据库里查询,当你第二次一样查询的时候他就不会去查数据库了,而是直接从缓存中拿数据了。
所以flush()就是刷新缓存……