问题描述
我正在尝试在 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 (将#修改为@)