4

我使用Eclipse 3.1.0 STS與Hibernate Tools 3.6.0。我正在嘗試連接到MySQL 5.5數據庫以生成我的DAO類。我使用的MySQL驅動程序使用mysql-connector-java的5.1.21.jarHibernate的工具在Eclipse STS給錯誤在連接到MySQL數據庫

在設置休眠控制檯文件(Hibernate的工具),我是能夠成功地ping我的數據庫。所以我認爲我的驅動版本沒問題。

設置休眠控制檯文件後,當我嘗試生成Hibernate逆向工程文件(reveng.xml),我收到以下錯誤 -

An internal error occurred during: "Fetching children of Database". 

我可以看到下面的堆棧跟蹤STS的錯誤日誌 -

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V 
    at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133) 
    at org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect.getTables(JDBCMetaDataDialect.java:26) 
    at org.hibernate.cfg.reveng.JDBCReader.processTables(JDBCReader.java:476) 
    at org.hibernate.cfg.reveng.JDBCReader.readDatabaseSchema(JDBCReader.java:74) 
    at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter$2.execute(LazyDatabaseSchemaWorkbenchAdapter.java:126) 
    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:54) 

我使用的步驟來使用這個link描述Hibernate的工具。

希望任何幫助或指針來解決這個問題。謝謝。

UPDATE

我搬到了STS 3.2.0和我創建了一個簡單的Maven快速啓動項目安裝JBoss 4.0.0工具

,隨後在link

提到在此的所有步驟安裝程序,我可以成功地爲數據庫表生成實體& DAO類。我不必重新啓動STS。它在第一次嘗試中運行良好。

能正常工作與MySQL 5.5和的Oracle 11g。

回答

2

我已經有過這個問題兩次了。在過去的兩週裏,我不得不將所有的東西都搬到一臺知名的機器上,所以我又跑回去了。我第一次通過在pom.xml中的任何地方逐字刪除對commons的任何引用來修復它。我不確定你是否在使用Maven,但是之前爲我修復了這個問題。

<exclusions> 
    <!-- Exclude Commons Logging in favor of SLF4j --> 
    <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
    </exclusion> 
</exclusions> 

我正在講我從頭開始創建一個新項目,並在同一點上遇到這個問題。

我發現在這個問題上這對我來說似乎很奇怪,你碰到它通過只創建與Hibernate一個新項目,可以很容易複製它很少INF。

我當然需要記錄,所以我打算讓這個固定的日誌記錄。我會在我的時候發佈我的答案。如果你發現一個可行的解決方案,你可以發佈嗎?謝謝!

+0

您是否找到了解決方案?我試圖創建一個新的Java項目,只有代碼gen的配置。我也遇到同樣的錯誤。但在重新啓動Eclipse後它正在工作。 – Stanley 2013-07-05 02:47:57

+2

是的。這是某種錯誤。沒有人真的把它固定下來,我可以找到一致,但解決方法有點簡單。我實際上最終只是在記錄數分鐘的時候發表評論,而讓Hibernate reveng工具做它的事情。通過這篇文章forum.hibernate.org/viewtopic.php?p=2441023然後我讀了他們,一切都很好。嘗試刪除Eclipse附加到大多數項目的默認日誌記錄。祝你好運!如果您找到了另一種解決方案或真正的解決方案,我們很樂意聽到:P – Dguti 2013-07-22 15:24:54

+0

謝謝Dguti,最後我可以解決這個問題。 – Mohit 2014-10-02 08:01:18