Micronaut Hibernate 二级缓存

问题描述 投票:0回答:2

我正在尝试在客户端服务器模式下使用 hazelcast 来启用 Hibernate 二级缓存。 但是当我运行应用程序时,我得到了这个异常

Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.hazelcast.client.cache.impl.HazelcastClientCachingProvider
    at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:210)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:130)
    ... 49 common frames omitted

这是我的休眠配置

jpa:
  default:
    properties:
      hibernate:
        cache:
          use_query_cache: false
          use_second_level_cache: true
          region:
            factory_class: com.hazelcast.client.cache.HazelcastClientCachingProvider

[更新] 这是我的 build.gradle

plugins {
    id("io.micronaut.application") version "$micronautAppVersion"
    id("com.google.cloud.tools.jib") version "$googleJibVersion"
    id "jacoco"
}

version = "0.1"

micronaut {
    runtime("netty")
    testRuntime("junit5")
    processing {
        incremental(true)
        annotations("com.test")
    }
}

dependencies {

    annotationProcessor "io.micronaut.data:micronaut-data-processor"
    annotationProcessor "io.micronaut:micronaut-http-validation"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
    annotationProcessor "io.micronaut.openapi:micronaut-openapi"
    implementation "javax.inject:javax.inject"
    implementation "io.micronaut:micronaut-http-client"
    implementation "io.micronaut:micronaut-runtime"
    implementation "io.micronaut.data:micronaut-data-hibernate-jpa"
    implementation "io.micronaut.sql:micronaut-hibernate-jpa"
    implementation "io.micronaut:micronaut-validation"
    implementation "javax.annotation:javax.annotation-api"
    implementation("javax.inject:javax.inject:1")
    implementation('io.micronaut.cache:micronaut-cache-hazelcast')
    runtimeOnly "io.micronaut.sql:micronaut-jdbc-hikari"
}
hazelcast micronaut micronaut-data
2个回答
0
投票

HazelcastClientCachingProvider
是一个客户端,这意味着它没有自己的任何缓存,只能与另一个缓存服务器通信(实际上,建议使用
jcache
作为标准Java缓存API,而不是特定于提供者的客户)。

Micronaut 不会通过包含依赖项来自动启动缓存服务器。你必须像这样配置它

或者,您可以直接使用 hibernate 配置来配置嵌入式缓存:

hibernate: cache: region: factory_class: jcache javax: cache: provider: com.hazelcast.cache.impl.HazelcastServerCachingProvider uri: <HazelcastConfig.xml>
    

0
投票
我想在 Micronaout Hibernate JPA 上使用 ehcache。我该如何使用? yml 配置是什么?

© www.soinside.com 2019 - 2024. All rights reserved.