Hibernate更新更改了db中的记录,但是将来的请求仍会返回缓存值?

时间:2014-03-08 13:27:05

标签: java hibernate

我正在使用以下代码通过hibernate更新记录:

        Session session = sessionFactory.getCurrentSession();
        session.beginTransaction();
        User u =  (User) session.get(User.class, userId) ;
        u.fooBar = newFooBar;
        session.update(u);
        session.getTransaction().commit();

当我执行此代码时,我可以在我的数据库中看到用户列fooBar的值已更改。但是,在将来的请求中,当进行查询以获取相同的User时,其fooBar值与更新前的值相同。如果我重新启动我的Web服务器,则值会更新。

Hibernate是否只是缓存旧值?如何在更新对象时强制它更新缓存值?

1 个答案:

答案 0 :(得分:2)

如果您启动每个servlet获取新事务并在完成后关闭它,您应该获取最新数据。

执行此操作的代码是getCurrentSession()。beginTransaction()和t.commit()或t.rollback()