在hibernate.cfg.xml中添加了
true
org.hibernate.cache.internal.OSCacheProvider
jar包也引入了。
在映射文件配置也添加了:
在hibernate3.3.2中使用2级缓存,是可以正常使用,但不知为何
在hibernate4.0.1中同样配置会出现:
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.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:68)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:339)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at com.hejian.hibernate.domain.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
... 3 more
求解。
我不太清楚 hibernate3.2 根据3.5.5源码来分析
你的属性名写错了
cache.provider_class
应为
hibernate.cache.region.factory_class
导致SettingFactory找不到该属性,而是用模式的NoCachingRegionFactory
但是目前有一个疑问:
[code="java"]
if ( accessStrategy == null && settings.isSecondLevelCacheEnabled() ) {
final AccessType accessType = AccessType.parse( model.getCacheConcurrencyStrategy() );
if ( accessType != null ) {
log.trace( "Building cache for entity data [" + model.getEntityName() + "]" );
EntityRegion entityRegion = settings.getRegionFactory().buildEntityRegion( cacheRegionName, properties, CacheDataDescriptionImpl.decode( model ) );
[/code]
如果use_second_cache 也不能正常获取 不应该调用buildEntityRegion
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=true
hibernate.cache.region.factory_class=org.hibernate.cache.EhCacheRegionFactory
net.sf.ehcache.configurationResourceName=/ehcache_hibernate.xml
我是用的ehcache,,,对于OSCache 暂没有集成过
你先试试Ehcache,,如果可以 再换成OSCache
true
true
org.hibernate.cache.ehcache.EhCacheRegionFactory