我正在使用Spring + JPA + Hibernate.我正在尝试启用Hibernate的二级缓存.在我的春天,applicationContext.xml
我有:
net.sf.ehcache.hibernate.SingletonEhCacheProvider /ehcache.xml
当我运行时,我收到错误:
Caused by: org.hibernate.HibernateException: Could not instantiate cache implementation at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:64) Caused by: org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache] at org.hibernate.cache.NoCacheProvider.buildCache(NoCacheProvider.java:21)
所以它抱怨我没有启用二级缓存.我试图通过添加到我的启用它applicationContext.xml
:
true
但仍然没有快乐.我也尝试将其添加到我的ehcache.xml中:
true
但它仍然无效.更改provider_class
为org.hibernate.cache.EhCacheProvider
也无济于事:
org.hibernate.cache.EhCacheProvider
我的实体类被注释为使用缓存
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
那么,我如何启用二级缓存?
编辑: 这是在bean下:
已解决:因为我正在使用LocalEntityManagerFactoryBean
它从中获取其设置META-INF/persistence.xml
.我的设置applicationContext.xml
甚至没有被阅读.
我没有回答这个问题,但海报自己找到答案并不明显.我转发他的回答:
因为我正在使用LocalEntityManagerFactoryBean
它从中获取其设置META-INF/persistence.xml
.我的设置applicationContext.xml
甚至没有被阅读.
试试这个:
true 4 true true net.sf.ehcache.hibernate.EhCacheRegionFactory
如果您使用Maven,请将其添加到您的POM文件中:
net.sf.ehcache ehcache-core 2.3.0
或者从http://ehcache.org/下载最新的jar