我收到此错误:
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,我拥有所有依赖项。
答案 0 :(得分:0)
在NoCacheRegionFactoryAvailableException
上放置一个异常断点并检查缺少的内容。这个错误响了,但我不记得确切的原因。但这就是我调试它的方式。
您使用的是Ehcache 3吗?因为当前的提供者是针对Ehcache 2的。
答案 1 :(得分:0)
我在SpringBoot和Hibernate中遇到了同样的错误。这些版本存在一些问题。这link对我有所帮助。
我使用了Spring Boot 1.5.1
和Hibernate 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{
}