【问题标题】:Error in setting Hibernate Configuration设置休眠配置时出错
【发布时间】:2015-03-16 00:09:51
【问题描述】:

我在为 postgresql 数据库配置休眠时遇到错误 -

错误日志详情 -

org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge]
    at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:402)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:270)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
    at org.hibernate.console.ConsoleConfiguration$5.execute(ConsoleConfiguration.java:278)
    at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
    at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107)
    at org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:273)
    at org.hibernate.eclipse.console.workbench.LazySessionFactoryAdapter.getChildren(LazySessionFactoryAdapter.java:43)
    at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:100)
    at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106)
    at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:397)
    ... 13 more
Caused by: org.hibernate.cache.CacheException: could not instantiate CacheProvider [org.hibernate.cache.internal.NoCacheProvider]
    at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:66)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.internal.NoCacheProvider cannot be found by org.hibernate.eclipse.libs_3.7.1.Final-v20131205-0918-B107
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:191)
    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
    at org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge.<init>(RegionFactoryCacheProviderBridge.java:63)
    ... 18 more

更新:

在@ConMan 提到的更改之后,我在同一个地方遇到了一个新错误-

org.hibernate.HibernateException: Could not instantiate dialect class
    at org.hibernate.dialect.resolver.DialectFactory.constructDialect(DialectFactory.java:163)
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:109)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:146)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2155)
    at org.hibernate.console.ConsoleConfiguration$6.execute(ConsoleConfiguration.java:430)
    at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
    at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107)
    at org.hibernate.console.ConsoleConfiguration.getSettings(ConsoleConfiguration.java:428)
    at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter$2.execute(LazyDatabaseSchemaWorkbenchAdapter.java:119)
    at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
    at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107)
    at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.readDatabaseSchema(LazyDatabaseSchemaWorkbenchAdapter.java:115)
    at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.getChildren(LazyDatabaseSchemaWorkbenchAdapter.java:65)
    at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106)
    at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.ClassCastException: org.hibernate.dialect.PostgreSQLDialect cannot be cast to org.hibernate.dialect.Dialect
    at org.hibernate.dialect.resolver.DialectFactory.constructDialect(DialectFactory.java:157)
    ... 16 more

【问题讨论】:

  • 您使用的是哪个 Hibernate 版本?你也在用 Spring 吗?
  • 我在项目中使用 hibernate-core 4.3.0.Final 作为 maven 依赖项。我的父项目也有 Spring 依赖项。
  • 这只是 IDE 休眠视图上的错误,还是在您运行代码时也会出现?检查 IDE 上的项目类路径是否与 Maven 上的相同。

标签: java hibernate postgresql hibernate-mapping


【解决方案1】:

问题出在这里:

Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.internal.NoCacheProvider cannot be found by org.hibernate.eclipse.libs_3.7.1.Final-v20131205-0918-B107

这基本上意味着你正在使用的hibernate的实现(org.hibernate.eclipse.libs...)不包含类NoCacheProvider.class。

NoCacheProvider 的实现可以在以下依赖项中找到:

  • hibernate-core - 3.6.0.Final、3.5.0-Final、3.3.0.SP1、3.3.0.GA
  • com.springsource.org.hibernate - 3.3.2、3.3.1、3.2.6
  • hibernate-core - 3.6.10.Final-patched-play-1.2.5、3.6.1.Final-patched-play-1.2、3.5.6-Final-patched-play-1.1.1、3.5.6 -Final-patched-play-1.1
  • 休眠 - 3.2.7.ga、3.2.6.ga、3.2.5.ga、3.2.4.sp1、3.2.4.ga、 3.2.3.ga, 3.2.2.ga, 3.2.1.ga, 3.2.0.ga, 3.2.0.cr3, 3.2.0.cr2, 3.2.0.cr1, 3.1.3, 3.1.2, 3.1.1、3.1
  • 休眠 - 3.1beta3、3.1beta2、3.1beta1、3.0.5、3.0.3
  • 全部休眠 - beta3.SP15

来源:Grep Code

编辑:

我刚刚看到您使用的是 hibernate-core 4.3.0.Final。在这个版本的休眠中,NoCacheProvider 类似乎不再存在。推荐的替代方法是使用以下类:

org.hibernate.cache.internal.NoCachingRegionFactory

【讨论】:

  • 我改变了你提到的方式,但现在错误不同了,其余的都是一样的。请参阅我的问题中的更新。似乎&lt;property name="hibernate.default_schema"&gt;my_schema&lt;/property&gt; 之类的属性不是hibernate.cfg.xml 的好地方,并且是此类问题的根源。
  • 你对属性 hibernate.dialect 使用什么值,你使用什么类型的数据库?
  • 我使用的是&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.PostgreSQLDialect&lt;/property&gt;,我的数据库是PostgreSQL。
  • 您是否使用不同版本的hibernate(即在hibernate-core、hibernate-annotations、hibernate-search等之间),这里可能存在不兼容版本之间的冲突?
  • 我觉得你说的很对。我只是对版本差异有同样的感觉,因此使用依赖项hibernate-entitymanager 可以解决所有问题。现在让我们看看会发生什么)。
猜你喜欢
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多