Hibernate缓存问题?

时间:2012-11-29 09:50:38

标签: java hibernate jpa jboss jboss5.x

我正在使用JPA和Hibernate,在JBOSS 5.1中运行。

我得到一个奇怪的行为,因为当我通过事务中的EntityManager写一些数据时,我提交了这个事务,并且在我开始一个新的事务来读取这个写入的数据之后,新的数据不会被查询(但旧的),但我看到数据库中提交的新数据(我通过另一个进程看到它)。

我可以根据需要多次重复读取(在同一事务的调试模式下),不会返回新数据。

然后,如果我执行entityManager.clear(),则下一次读取(在同一事务中)最终返回数据。

有趣的部分从这里开始:安装在另一台机器上的相同JBoss(物理副本,库,配置,所有内容),指向同一物理数据库工作FINE(它获取数据而无需清除EM)。所以它必须与环境有关......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

检查两台服务器上的JBoss/server/default/deployers/ejb3.deployer/META-INF/persistence.properties

不幸的是,默认情况下它只包含hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider,这不是交易性的,应该替换为org.hibernate.cache.jbc2.JBossCacheRegionFactoryorg.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory

另见

https://community.jboss.org/wiki/ClusteredJPAHibernateSecondLevelCachinginJBossAS5

http://www.mastertheboss.com/hibernate-cache/using-hibernate-second-level-cache-with-jboss-as-5-6-7