JPA二级缓存在wildfly8.2中,hibernate-entitymanager 4.3.8.Final

时间:2015-03-17 19:05:17

标签: java hibernate caching jpa

我正在尝试在wildfly8.2中使用二级缓存 我通过JavaConfig设置属性     属性property = new Properties();     properties.setProperty(“hibernate.hbm2ddl.auto”,hibernateHbm2ddlAuto);     properties.setProperty(“hibernate.dialect”,hibernateDialect);     properties.setProperty(“hibernate.show_sql”,“true”);     properties.setProperty(“hibernate.cache.use_second_level_cache”,“true”);     properties.setProperty(“hibernate.cache.use_query_cache”,“true”);

但是我收到以下错误

  • 由以下原因引起:org.hibernate.cache.NoCacheRegionFactoryAvailableException:在应用程序中使用了二级缓存,但未给出属性hibernate.cache.region.factory_class;请使用hibernate.cache.region.factory_class设置禁用二级缓存或设置正确的区域工厂,并确保类路径上有二级缓存提供程序(例如,hibernate-infinispan)。

为什么根据文档提供该错误并不是必需的。任何输入都会有所帮助。

JPA shared cache / second level cache in WildFly

由于 Sanjeev。

2 个答案:

答案 0 :(得分:1)

您需要定义属性hibernate.cache.region.factory_class,如:

Configuration.setProperty("hibernate.cache.region.factory_class", "net.sf.ehcache.hibernate.EhCacheRegionFactory")

我会使用C3P0或Infinispam作为二级缓存。

答案 1 :(得分:0)

在我的情况下,我在子项目中有不需要的persistence.xml文件,它使wildfly狂野 - 它覆盖了配置文件。

属性<entry key="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>完全被忽略。删除(重命名)persistence.xml后,wildfly将使用database.xml中的属性正确启动。希望它可以节省你一些时间 (Wildfly 9.0.1Final,Hibernate 4.3.6.Final)