我正在使用带有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)
我正在使用此链接中描述的步骤来使用 Hibernate 工具。
将不胜感激任何帮助或指针来解决这个问题。谢谢。
更新
我搬到了 STS 3.2.0 并安装了 JBoss Tools 4.0.0
我创建了一个简单的 Maven 快速入门项目,并按照链接中提到的所有步骤进行操作
在这个设置中,我可以成功地为数据库表生成实体和 DAO 类。我也不必重新启动 STS。它在第一次尝试中运行良好。
这适用于 MySQL 5.5 和 Oracle 11g。