如何在二级缓存上设置过期时间?

How can I set expiry on Second Level Cache?

问题

我不能用Ehcache设置二级缓存过期。
有什么方法可以配置过期时间吗?

我的代码

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'org.hibernate:hibernate-jcache:5.6.5.Final'
implementation 'org.ehcache:ehcache:3.9.9'

application.yml

spring:
  jpa:

    properties:
      javax:
        persistence:
          sharedCache:
            mode: ENABLE_SELECTIVE   # Enable caches only @Cacheable annotated classes
      hibernate:
        cache:
          use_query_cache: true
          use_second_level_cache: true
          region:
            factory_class: org.hibernate.cache.jcache.JCacheRegionFactory

我的实体

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
@Cacheable
@Cache(region = "test_cache", usage = CacheConcurrencyStrategy.READ_WRITE)
public class Test {
.
.
.
}

是的,有办法。

  1. 将您的 factory_class 更改为 org.hibernate.cache.ehcache.EhCacheRegionFactory
  2. /src/main/resources 中使用以下内容创建一个 ehcache.xml
   ...
   <cache-template name="default">
      <expiry>
         <ttl unit="hours">48</ttl>
      </expiry>
    </cache-template>
   ...

有关 XML 配置的详细信息,请访问 https://www.ehcache.org/documentation/3.9/xml.html