2014-01-27 32 views
0

我正在嘗試使用jboss工具hibernate代碼生成爲我的postgresql數據庫中的表生成DAO和hibernate映射。我已經設置了我的Hibernate的配置,但是當我嘗試連接,我得到這個錯誤:使用jboss工具/休眠配置連接到數據庫時出錯

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) 

我看着裏面StandardBasicTypes在第54行,其內容public static final BooleanType BOOLEAN = BooleanType.INSTANCE;而且我是按照外地BooleanType.INSTANCE那在類BooleanType中存在。我使用hibernate-core-4.1.8.Final.jar,hibernate-spatial-4.0-M1.jar,並且在我的hibernate配置中,「Hibernate Version」是「4.0」。

回答

0

的問題與我的Hibernate的配置做的,特別是司機和方言在hibernate版本。最初,我有

<property name="hibernate.connection.driver_class">org.postgis.DriverWrapper</property> 
<property name="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</property> 

而我在上面的問題中收到錯誤堆棧跟蹤。我將這些屬性更改爲

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

並且能夠通過休眠工具連接到數據庫。如果有人關心,我創建了一個JIRA here來跟蹤這個問題,任何人都希望能夠將hibernate工具與地理空間對象一起使用。

0

檢查,如果你沒有在你的classpath

+0

我不相信Hibernate jars的多個版本都在類路徑上,但我不是100%。如果毫無疑問,我會如何檢查這種情況? – geofflittle

+0

如果你在eclipse上右擊project - Properties - JavaBuild Path - Libraries。 – jcrada

+0

在庫中列出的唯一hibernate jars是hibernate-commons-annotations-4.0.1,hibernate-core-4.1.8,hibernate-jpa-2.0,hibernate-spatial-4.0。 – geofflittle