【问题标题】:Hibernate tools giving error in Eclipse STS while connecting to MySQL database连接到 MySQL 数据库时,Hibernate 工具在 Eclipse STS 中出现错误
【发布时间】:2013-09-30 21:21:09
【问题描述】:

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

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

设置休眠控制台文件后,当我尝试生成休眠逆向工程文件(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。

【问题讨论】:

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


    【解决方案1】:

    我已经两次遇到这个问题了。在过去的两周里……我不得不把所有东西都转移到一台已知的机器上,所以我又遇到了它。我第一次通过从 pom.xml 中的任何位置删除对 commons-logging 的任何引用来修复它。我不确定你是否在使用 Maven,但这之前对我来说是半固定的。

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

    正如我们所说,我正在从头开始创建一个新项目,并同时遇到了这个问题。

    我在这个问题上发现的信息非常少,这对我来说似乎很奇怪,因为您只需使用 hibernate 创建一个新项目就可以很容易地复制它。

    我当然需要记录,所以我计划通过记录来解决这个问题。当我这样做时,我会发布我的答案。如果您找到了可行的解决方案,您可以发布吗?谢谢!

    【讨论】:

    • 您找到解决方案了吗?我试图创建一个新的 Java 项目,除了代码生成的配置之外什么都没有。我也得到同样的错误。但它在重新启动 Eclipse 后工作。
    • 是的。这是某种错误。没有人真正确定我可以连贯地找到它,但解决方法有点简单。实际上,当我让 Hibernate reveng 工具完成它的工作时,我实际上只是在几分钟内注释掉了日志记录。根据这个帖子 forum.hibernate.org/viewtopic.php?p=2441023 然后我阅读了它们,一切都很好。尝试删除 Eclipse 附加到大多数项目的默认日志记录。祝你好运!很想听听您是否找到了另一个解决方案 - 或真正的解决方案:P
    • 谢谢Dguti,我终于可以解决这个问题了。
    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2017-05-09
    • 2017-12-08
    • 2013-03-26
    • 2021-08-19
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多