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