0

我在 STS/Eclipse 上使用 Grails,并希望使用 Hibernate Tools 来测试和模拟 HQL 查询。Eclipse有Hibernate Tools插件,它是JBoss Tools的一部分。

我不知道让它与 Grails 一起工作。假设我有一堂课:

class User {
  String name
  Date birthday
}

为了使Hibernate Tools在我的 Grails 项目中正常工作,我需要做什么?在将 Hibernate 连接到我的数据库和项目后,我也收到以下错误:

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:53)

如何让我的 Grails 项目与Hibernate Tools一起工作?

4

1 回答 1

0

似乎在 1.5.x 和 1.6.x 之间存在与 SLF4J 不兼容的 API 更改。您可能在 Eclipse 中安装了 1.5.x 版本,但休眠工具需要 1.6.x。我不确定你是如何进入那种状态的。我猜测休眠工具需要不正确的 slf4j 版本。更有可能的是,版本约束过于宽松,并且在不应该使用 1.5.5 时使用了它。

确实,查看 Hibernate 工具的源代码,版本是 1.5.8:

https://github.com/hibernate/hibernate-tools/blob/master/pom.xml#L135

我不知道如何解决这个问题,但它看起来确实像休眠工具中的一个错误。他们应该将其更改为 1.6.1 或更高版本。我会向他们提出问题或在他们的邮件列表中发布。您可以在此处找到执行此操作的位置:

https://github.com/hibernate/hibernate-tools

于 2013-06-10T01:18:09.740 回答