我正在使用以下代码通过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是否只是缓存旧值?如何在更新对象时强制它更新缓存值?
答案 0 :(得分:2)
如果您启动每个servlet获取新事务并在完成后关闭它,您应该获取最新数据。
执行此操作的代码是getCurrentSession()。beginTransaction()和t.commit()或t.rollback()