我有一个使用Hibernate访问MYSQL DB的struts应用程序。我有许多页面可以更改数据库。这些更改进行得很顺利,数据库中的数据正在更新。但是,当浏览到应该显示此更新信息的页面时,它通常不存在,甚至在刷新几页后仍不存在。最终它将打开。我假设这与休眠缓存数据有关,但是如何确保数据是最新的呢?我以为,当所有这些都经过休眠会话后,它将获取更改吗?
我用来进行更新的代码是:
hSession = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = hSession.getTransaction();
tx.begin();
hSession.update(user) ;
然后再次将该用户撤出:
org.hibernate.Session hSession = HibernateUtil.getSessionFactory()
.getCurrentSession();
Transaction tx = hSession.beginTransaction();
User u= (User) hSession.load(User.class, userID);
最佳答案
信息不足,无法真正给出答案。但是有一些要检查的地方:
您正在使用交易。您是否正确提交了它们?也许在某些时候您的代码看不到更改,因为尚未提交(或因为读取代码在另一个使用先前状态的事务中)。
缓存也可能是一个问题。要进行检查,您可以在每次更改数据库(Session.flush())之后显式刷新缓存。这可能会降低性能,但可以帮助您缩小问题范围。