grails 3(spring-boot) - 如何配置hibernate二级缓存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grails 3(spring-boot) - 如何配置hibernate二级缓存相关的知识,希望对你有一定的参考价值。

当尝试使用ehcache作为休眠二级缓存时,我得到以下异常:org.hibernate.cache.NoCacheRegionFactoryAvailableException:在应用程序中使用二级缓存,但是没有给出属性hibernate.cache.region.factory_class

我试着在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

但这些似乎都没有帮助。

答案

如果你删除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
另一答案

你应该在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'
另一答案

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

尝试在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

以上是关于grails 3(spring-boot) - 如何配置hibernate二级缓存的主要内容,如果未能解决你的问题,请参考以下文章

将 grails 2 插件导出到 grails 3 时出错

部署到 Tomcat 时,Grails 3 会话超时不起作用

Grails:列转换器(如 Hibernate)

如何为 grails 插件配置日志记录?

用于动态脚手架的Grails3控制器模板

如何为登录GRAILS(Spring security)的用户实现会话?