atojaoomy 2012-02-27 10:08
浏览 319
已采纳

hibernate4.0.1使用二级缓存,出现NoCachingEnabledException: Second-level cache is not enab

在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

求解。

  • 写回答

3条回答 默认 最新

  • tianshilang 2012-02-27 16:59
    关注

    我不太清楚 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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys