Hibernate配置 - NoCacheRegionFactoryAvailableException

时间:2017-05-05 11:48:43

标签: java hibernate ehcache

我收到此错误:

Caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given; please either disable second level cache or set correct region factory using the hibernate.cache.region.factory_class setting and make sure the second level cache provider (hibernate-infinispan, e.g.) is available on the classpath.

但我有这个属性集:

<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">net.sf.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property>

我正在使用Hibernate 4.3.10.Final,我拥有所有依赖项。

2 个答案:

答案 0 :(得分:0)

NoCacheRegionFactoryAvailableException上放置一个异常断点并检查缺少的内容。这个错误响了,但我不记得确切的原因。但这就是我调试它的方式。

您使用的是Ehcache 3吗?因为当前的提供者是针对Ehcache 2的。

答案 1 :(得分:0)

我在SpringBoot和Hibernate中遇到了同样的错误。这些版本存在一些问题。这link对我有所帮助。

我使用了Spring Boot 1.5.1Hibernate 5.2.8并修改了hibernate.properties文件,如下所示:

 hibernate.cache.use_second_level_cache=true   
 hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory

在实体上添加缓存注释:

@Entity
@Table(name="test")
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Test{
}