org.hibernate.HibernateException: could not instantiate RegionFactory



org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge]
 at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:389)
 at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:262)
 at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2119)
 at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2115)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1339)
 at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
 at com.nw.test.TestCacheLv2.setUp(TestCacheLv2.java:25)
 at junit.framework.TestCase.runBare(TestCase.java:128)
 at junit.framework.TestResult$1.protect(TestResult.java:106)
 at junit.framework.TestResult.runProtected(TestResult.java:124)
 at junit.framework.TestResult.run(TestResult.java:109)
 at junit.framework.TestCase.run(TestCase.java:120)
 at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
 at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:384)
 ... 17 more
Caused by: org.hibernate.cache.CacheException: could not instantiate CacheProvider [org.hibernate.catche.EhCacheProvider]
 at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:66)
 ... 22 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.catche.EhCacheProvider
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:169)
 at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
 at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:63)
 ... 22 more


此错是因为一时大意把hibernate.cfg.xml中关于二级缓存配置的属性名称写错了

<!-- 二级缓存配置 -->
  <!-- 1.导入commons-logging-1.1.3.jar架包 -->
  <!-- 2.将hibernate-distribution-3.3.2.GA\project\etc\ehcache.xml放置src下 -->
  <!-- 3.设置属性hibernate.cache.use_second_level_cache -->
  <property name="hibernate.cache.use_second_level_cache">true</property>
  <!-- 4.设置属性 hibernate.cache.provider_class -->
  <property name="hibernate.cache.provider_class">org.hibernate.catche.EhCacheProvider</property>
  <mapping class="com.nw.vo.Students" />
  <!-- 5.设置使用二级缓存的实体 -->
  <class-cache usage="read-only" class="com.nw.vo.Students" />

把第四步
  <property name="hibernate.cache.provider_class">写成了
  <property name="hibernate.catche.provider_class">


唉,掌握一门外语是多么滴可贵


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误提示意思是当没有设置'hibernate.dialect'时,无法访问方言解析信息。可能是因为在使用Hibernate时没有正确配置方言信息导致的。需要检查配置文件中是否设置了正确的方言信息。 ### 回答2: 这个异常是Hibernate框架提供的错误信息,提示在配置文件中没有设置'hibernate.dialect'参数,导致无法访问方言解析信息。 在Hibernate框架中,Hibernate Dialect可以理解为数据库方言,它负责将Hibernate Query转化为适当的SQL Query语句来与数据库进行通信。因此在配置Hibernate时,必须为相应的数据库设置适当的方言。 如果没有为数据库设置方言,则会出现以上异常信息。在这种情况下,Hibernate无法识别当前数据库的SQL语法和特性,也无法将Hibernate的查询转换为相应的SQL查询语句。这会导致Hibernate无法与数据库进行通信,从而导致应用程序的崩溃。 为解决这个异常,需要在Hibernate配置文件的hibernate.cfg.xml中设置合适的方言,以匹配当前使用的数据库。可以根据不同的数据库类型指定不同的方言,如'MySQL5Dialect'或'Oracle10gDialect'等。 在配置文件中设置方言的方法如下: <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> 或者 <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 通过正确地设置方言,可以解决'access to dialectresolutioninfo cannot be null when 'hibernate.dialect' not set'异常,使Hibernate框架能够顺利地与数据库通信,实现数据操作功能。 ### 回答3: org.hibernate.hibernateexception: access to dialectresolutioninfo cannot be null when 'hibernate.dialect' not set这个错误信息通常出现在使用Hibernate框架时,因为Hibernate在运行过程中需要使用到方言(Dialect),但是如果方言没有正确设置,就会出现这个错误。方言是Hibernate框架中特定数据库的语言和语法,用于与数据库进行通信和交互。 错误信息中的“dialectresolutioninfo”表示方言信息,意味着Hibernate无法确定使用哪种方言进行数据库交互。这个错误通常与Hibernate配置有关,因此需要检查一下Hibernate的配置文件是否正确设置了方言。 具体解决办法可以尝试以下几个步骤: 1. 确认hibernate.cfg.xml或者persistence.xml文件中的方言是否正确设置。在这些文件中可以设置方言,例如对于MySQL数据库可以设置如下方言: <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 2. 确认classpath中是否存在正确的Hibernate方言Jar包。根据使用的数据库不同,需要引用不同的方言包。例如,使用MySQL数据库需要引用mysql-connector-java.jar包和hibernate-core.jar包。 3. 确认数据库连接是否正确。在Hibernate的配置文件中,需要设置正确的数据库连接信息,包括数据库URL、用户名和密码等。 4. 检查classpath中是否存在重复的Hibernate包。如果在classpath中引用了重复的Hibernate包,可能会导致Hibernate无法加载所需的类。 通过以上步骤的检查和调整,可以解决这个错误问题。虽然出现这个错误的原因可能有很多,但是通常只需要检查配置文件和依赖包就可以解决。在Hibernate的开发过程中,遵循正确的配置和使用规范,可以避免很多问题的出现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dongkai_it

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值