2

尝试将ehcache用作hibernate二级缓存时,出现以下异常:org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given

我尝试在 application.yml 中配置它:

spring:
  jpa:
    properties:
      hibernate:
        cache:
          region:
            factory_class: org.hibernate.cache.ehcache.EhCacheRegionFactory

和:

grails:
    hibernate:
      cache:
        use_second_level_cache: true
        provider_class: net.sf.ehcache.hibernate.EhCacheProvider
        region:
          factory_class: org.hibernate.cache.ehcache.EhCacheRegionFactory

但这些似乎都没有帮助。

4

3 回答 3

1

如果您删除grails顶级配置,后者应该可以工作,因为 Grails 会查找“hibernate.blah”而不是“grails.hibernate.blah”:

  hibernate:
      cache:
        use_second_level_cache: true
        provider_class: net.sf.ehcache.hibernate.EhCacheProvider
      region:
         factory_class: org.hibernate.cache.ehcache.EhCacheRegionFactory
于 2015-03-18T10:24:11.760 回答
0

这是一个迟到的答案,但将来可能会对某人有所帮助。

尝试在您的 pom.xml 中添加此依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.2.2.Final</version>
</dependency>

然后在 application.yml 中:

spring:
    jpa:
        properties:
            hibernate.cache.use_second_level_cache: true
            hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.EhCacheRegionFactory
于 2018-03-06T18:10:42.597 回答
0

您应该删除grails之前的hibernate. Grails 期望区域结构位于缓存之下。

记住制表符在 yml 文件中很重要

所以代码应该是这样的:

hibernate:
cache:
    queries: false
    use_second_level_cache: true
    use_query_cache: false
    region:
        factory_class: 'org.hibernate.cache.ehcache.EhCacheRegionFactory'
于 2016-01-05T00:08:19.597 回答