java - hibernate 不反射(reflect)变化

标签 java hibernate jakarta-ee struts

我有一个使用 Hibernate 访问 MYSQL 数据库的 struts 应用程序。我有许多对数据库进行更改的页面。这些更改进行得很好,数据在数据库中更新。但是,当浏览到应该显示此更新信息的页面时,它通常不存在,甚至在刷新几次页面后它仍然不存在。最终它会出现。我假设这与 hibernate 缓存数据有关,但我如何确保数据是最新的?我曾假设,当它全部通过 hibernate session 时,它会接受更改吗? 我用来进行更新的代码是:

    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);

最佳答案

信息太少,无法真正给出答案。但有几点需要检查:

  • 您正在使用交易。你正确地 promise 了吗?也许在某些时候您的代码看不到更改,因为尚未提交(或者因为读取代码在另一个使用先前状态的事务中)。

  • 缓存也可能是个问题。要进行检查,您可以在每次更改数据库后显式刷新缓存 (Session.flush())。这可能会降低性能,但可能会帮助您缩小问题范围。

关于java - hibernate 不反射(reflect)变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671830/

相关文章:

database - 什么时候提交事务?

java - EnumSet 的不可变版本

java - 重启手机取消共享首选项

java - Hibernate通过java注释将java中的嵌套集合映射到映射表?

java - 支持 Spring 的 Web 应用程序

java - web.xml : URL mapping

java - 当 Jlabel 添加到 JButton 之前时如何阻止 JButton 改变位置

java - 从java调用过程时出现"The statement did not return a result set"

java - @Query 标签中的嵌套 SQL 无法正常工作

java - 为后台线程从 Hibernate 获取新 session