您好我遇到了休眠二級緩存的一些問題。 作爲緩存提供者,我使用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 {
進口的註解是: import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy;
我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=""/>
,並且刪除了錯誤的前綴大THX魯斯蘭!
你應該完全拼出單詞「level」而不是「lvl」。它更具可讀性和可讀性。 – 2009-04-19 19:29:33
你說得對。我正在寫這篇文章,感覺很沮喪,所以我沒有想過這件事^^謝謝 – Dogrizz 2009-04-19 20:38:59