gpt4 book ai didi

java - Hibernate 二级缓存

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:02 24 4
gpt4 key购买 nike

您好,我在 hibernate 二级缓存方面遇到了一些问题。作为缓存提供者,我使用 ehcache。

来自 persistence.xml 的部分配置

<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.EhCacheProvider" />
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml" />

我使用注解配置我的实体:

@Cache(region = "Kierunek", usage = CacheConcurrencyStrategy.READ_WRITE)public class Kierunek implements Serializable {

imports for those annotations are:import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

my ehcache.xml

<diskStore path="java.io.tmpdir" />

<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU" />

<cache name="Kierunek" maxElementsInMemory="1000"
eternal="true" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" />

有人知道为什么我会收到以下错误吗?

WARNING: Could not find a specific ehcache configuration for cache named [persistence.unit:unitName=pz2EAR.ear/pz2EJB.jar#pz2EJB.Kierunek]; using defaults.
19:52:57,313 ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=pz2EAR.ear/pz2EJB.jar#pz2EJB state=Create
java.lang.IllegalArgumentException: Cache name cannot contain '/' characters.

解决方案是在 persistence.xml 中添加另一个属性

<property name="hibernate.cache.region_prefix" value=""/>

然后删除了错误的前缀 big thx ruslan!

最佳答案

恕我直言,您将获得为您的类(class)生成的区域名称。这个生成的名称“persistence.unit:unitName=pz2EAR.ear/pz2EJB.jar#pz2EJB.pl.bdsdev.seps.encje.Kierunek”。而且它没有在您的 ehcache.xml 配置中定义。它还在寻找预定义的名称,因此它不能使用默认区域。

作为解决此问题的一个选项,您可以使用@Cache 注释属性来预定义一些区域名称,例如

@Cache(region = 'Kierunek', usage = CacheConcurrencyStrategy.READ_WRITE) 
public class Kierunek implements Serializable {
// ....
}

在ehcache.xml中

<cache name="Kierunek" 
maxElementsInMemory="1000"
eternal="true"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU" />

关于java - Hibernate 二级缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com