Java 使用jboss工具/hibernate配置连接到数据库时出错

Java 使用jboss工具/hibernate配置连接到数据库时出错,java,hibernate,postgresql,jboss,postgis,Java,Hibernate,Postgresql,Jboss,Postgis,我正在尝试使用jboss工具hibernate代码生成为postgresql数据库中的表生成DAO和hibernate映射。我已设置了hibernate配置,但当我尝试连接时,出现以下错误: java.lang.NoSuchFieldError: INSTANCE at org.hibernate.type.StandardBasicTypes.<clinit>(StandardBasicTypes.java:54) at org.hibernate.spatial.

我正在尝试使用jboss工具hibernate代码生成为postgresql数据库中的表生成DAO和hibernate映射。我已设置了hibernate配置,但当我尝试连接时,出现以下错误:

java.lang.NoSuchFieldError: INSTANCE
    at org.hibernate.type.StandardBasicTypes.<clinit>(StandardBasicTypes.java:54)
    at org.hibernate.spatial.dialect.postgis.PostgisDialect.registerTypesAndFunctions(PostgisDialect.java:55)
    at org.hibernate.spatial.dialect.postgis.PostgisDialect.<init>(PostgisDialect.java:42)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.hibernate.dialect.resolver.DialectFactory.constructDialect(DialectFactory.java:157)
    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)
java.lang.NoSuchFieldError:实例
位于org.hibernate.type.StandardBasicTypes。(StandardBasicTypes.java:54)
位于org.hibernate.spatical.dialogue.postgis.postgisdialogue.registerTypesAndFunctions(postgisdialogue.java:55)
位于org.hibernate.spatical.dialogue.postgis.postgisdialogue.(postgisdialogue.java:42)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.lang.Class.newInstance(未知源)
位于org.hibernate.dialen.resolver.dialenfactory.ConstructDialent(dialenfactory.java:157)
位于org.hibernate.dialen.resolver.dialenfactory.builddialen(dialenfactory.java:109)
位于org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:146)
位于org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
位于org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2155)
位于org.hibernate.console.ConsoleConfiguration$6.execute(ConsoleConfiguration.java:430)
位于org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
位于org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107)
位于org.hibernate.console.ConsoleConfiguration.getSettings(ConsoleConfiguration.java:428)
位于org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter$2.execute(LazyDatabaseSchemaWorkbenchAdapter.java:119)
位于org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
位于org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107)
位于org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.readDatabaseSchema(LazyDatabaseSchemaWorkbenchAdapter.java:115)
位于org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.getChildren(LazyDatabaseSchemaWorkbenchAdapter.java:65)
位于org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106)
位于org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
位于org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
我在第54行查看了StandardBasicTypes,它的内容是
public static final BooleanType BOOLEAN=BooleanType.INSTANCE并且我遵循了BooleanType类中确实存在的BooleanType.INSTANCE字段


我正在使用hibernate-core-4.1.8.Final.jar、hibernate-spatial-4.0-M1.jar,在我的hibernate配置中,“hibernate版本”是“4.0”。

检查类路径上是否没有两个hibernate版本

问题与我的hibernate配置有关,特别是驱动程序和方言。原来我有

<property name="hibernate.connection.driver_class">org.postgis.DriverWrapper</property>
<property name="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</property>
org.postgis.DriverWrapper
org.hibernate.spatical.dial.postgis.postgisdial
我收到了上面问题中的错误堆栈跟踪。我将这些属性更改为

<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
org.postgresql.Driver
org.hibernate.dialogue.PostgreSqlDialogue

并且能够通过hibernate工具连接到数据库。如果有人关心,我创建了一个JIRA来跟踪问题,如果有人希望能够将hibernate工具用于地理空间对象。

显然,所有hibernate JAR及其在编辑器中的配置都需要匹配。只有确保编辑器下拉列表中的hibernate spatial+hibernate core+hibernate版本选择都是相同的版本,Geofflittle的答案才是正确的

我不相信hibernate JAR的多个版本在类路径上,但我不是100%。如果您在eclipse上,右键单击project-Properties-JavaBuild Path-Libraries。库中列出的唯一hibernate JAR是hibernate-commons-annotations-4.0.1、hibernate-core-4.1.8、hibernate-jpa-2.0、hibernate-spatial-4.0。