1

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

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

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

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

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

有任何想法吗?

4

1 回答 1

0

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

不幸的是,默认情况下它只包含hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider非事务性的,应该用org.hibernate.cache.jbc2.JBossCacheRegionFactoryor替换org.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

于 2012-11-29T14:10:24.507 回答