2015-03-02 46 views
1

当试图使用ehcache作为hibernate二级缓存时,出现以下异常: org.hibernate.cache.NoCacheRegionFactoryAvailableException:使用二级缓存该应用程序,但财产hibernate.cache.region.factory_class没有给出grails 3(spring-boot) - 如何配置hibernate二级缓存

我试图将其配置在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 

但这些似乎都没有帮助。

回答

0

如果去掉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 
+0

似乎不工作,我创建的https://jira.grails .org/browse/GRAILS-12091 – houbie 2015-03-19 14:27:43

+1

我有点困惑。我生成了一个3.0.1版的新应用程序,我在application.yml中看到: - grails> hibernate> cache> queries:false – rawi 2015-04-22 12:39:53

0

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

记住标签在阳明文件

是重要的,这样的代码应该是这个样子:

hibernate: 
cache: 
    queries: false 
    use_second_level_cache: true 
    use_query_cache: false 
    region: 
     factory_class: 'org.hibernate.cache.ehcache.EhCacheRegionFactory' 
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 
相关问题