Hibernate工具在连接MySQL数据库时在Eclipse STS中出错

时间:2013-03-05 18:37:47

标签: mysql slf4j sts-springsourcetoolsuite hibernate-tools jboss-tools

我正在使用带有Hibernate Tools 3.6.0的Eclipse STS 3.1.0。我正在尝试连接到MySQL 5.5数据库以生成我的DAO类。我正在使用MySQL驱动程序mysql-connector-java-5.1.21.jar

在设置hibernate控制台文件(Hibernate工具)时,我能够成功ping我的数据库。所以我假设我的驱动程序版本没问题。

设置hibernate控制台文件后,当我尝试生成Hibernate Reverse Engineering文件(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工具。

感谢您解决此问题的任何帮助或指示。感谢。

更新

我转到STS 3.2.0并安装了JBoss Tools 4.0.0

我创建了一个简单的maven快速入门项目,并按照link

中提到的所有步骤进行操作

在此设置中,我可以成功生成实体&数据库表的DAO类。我也没有重启STS。它在第一次尝试中运作良好。

这适用于MySQL 5.5以及Oracle 11g。

1 个答案:

答案 0 :(得分:2)

我现在有两次这个问题了。在过去的两周里......我不得不把一切都搬到一台知道的机器上,所以我再次遇到它。我第一次通过逐字地删除对pom.xml中任何位置的公共日志记录的引用来修复它。我不确定你是否使用Maven,但之前我已经为它解决了这个问题。

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

我正在讲的是从头开始创建一个新项目并在同一点遇到这个问题。

我在这个问题上找到了很少的信息对我来说似乎很奇怪,因为你只是通过使用hibernate创建一个新项目并且可以很容易地复制它来进行它。

我当然需要记录,所以我打算通过记录来解决这个问题。我会在发布时回复。如果你找到了可行的解决方案,你可以发帖吗?谢谢!