使用 Hibernate 5 + JCache + Ehcache 3 进行查询缓存不起作用JBoss / Maven 项目

问题描述

我正在尝试在 JBoss 上使用 ehcache 3 和 hibernate 5 查询缓存,但配置文件 ehcache.xml 没有考虑在内,似乎使用了 JBoss 认缓存 infinispan 而不是 ehcache(ehcache 提供程序似乎没有被加载)

persistence.xml :

<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.jcache.jcacheRegionFactory" />
        
<property name="hibernate.javax.cache.provider" value="org.ehcache.jsr107.EhcacheCachingProvider" />
<property name="hibernate.javax.cache.uri" value="classpath://ehcache.xml" />

实体:

@Entity
@Cacheable(true)  
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY.READ_WRITE,region = "MyEntity")  
@Table(name = "TABLE_NAME")  
@NamedQueries({  
    @NamedQuery(name = FIND_BY_ID,query = "SELECT p FROM MyEntity p where id = :pId",hints = {  
                @QueryHint(name = "org.hibernate.cacheable",value = "true"),@QueryHint(name = "org.hibernate.cacheRegion",value = "NamedQueries") }) })  

ehcache.xml :

<ehcache:cache alias="MyEntity">
    <ehcache:expiry>
        <ehcache:ttl unit="seconds">5</ehcache:ttl>
    </ehcache:expiry>
    <ehcache:heap unit="entries">10</ehcache:heap>
</ehcache:cache>

<ehcache:cache alias="NamedQueries">
    <ehcache:expiry>
        <ehcache:ttl unit="seconds">5</ehcache:ttl>
    </ehcache:expiry>
    <ehcache:heap unit="entries">10</ehcache:heap>
</ehcache:cache>

pom.xml :

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.27.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jcache</artifactId>
    <version>5.4.15.Final</version>
</dependency>            
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.7.0</version>
</dependency>

调试日志:

10:04:05,977 DEBUG [org.hibernate.cache.internal.RegionFactoryInitiator] (ServerService Thread Pool -- 75) Cache region factory : org.infinispan.hibernate.cache.v53.InfinispanRegionFactory
10:06:33,632 INFO  [org.jboss.as.clustering.infinispan] (default task-1) WFLYCLINF0002: Cache app-ear-2.0.0.ear#defaultPersistenceUnit.NamedQueries démarré depuis le conteneur hibernate

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...