4

Hibernate Tools 3.6.0で Eclipse STS 3.1.0 を使用しています。DAO クラスを生成するために MySQL 5.5 データベースに接続しようとしています。MySQL ドライバー mysql-connector-java-5.1.21.jar を使用しています

(Hibernate ツールの) hibernate コンソール ファイルをセットアップしているときに、データベースに対して正常に ping を実行できました。したがって、ドライバーのバージョンは問題ないと思います。

Hibernate コンソール ファイルをセットアップした後、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)

このリンクで説明されている Hibernate ツールを使用する手順を使用しています。

この問題を解決するためのヘルプやポインタをいただければ幸いです。ありがとう。

アップデート

STS 3.2.0 に移行し、JBoss Tools 4.0.0 をインストールしました

シンプルなmavenクイックスタートプロジェクトを作成し、リンクに記載されているすべての手順に従いました

このセットアップでは、データベース テーブルのエンティティと DAO クラスを正常に生成できました。STS を再起動する必要もありませんでした。最初の試み自体ではうまくいきました。

これは、MySQL 5.5 および Oracle 11g で正常に動作します。

4

1 に答える 1

2

私は今、この問題を2回経験しています。この 2 週間で... すべてを既知のマシンに移行する必要があったため、再びそのマシンに遭遇しました。初めて pom.xml 内の commons-logging への参照を文字通り削除して修正しました。Mavenを使用しているかどうかはわかりませんが、これで以前は半分修正されました。

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

私が話しているように、私は新しいプロジェクトをゼロから作成していて、同じ時点でこの問題に遭遇しました。

この問題に関する情報はほとんど見つかりませんでしたが、休止状態で新しいプロジェクトを作成するだけで非常に奇妙に思え、非常に簡単に複製できます。

もちろんロギングが必要なので、ロギングでこれを修正する予定です。私がそうするとき、私は私の答えを投稿します。実行可能な解決策を見つけた場合は、投稿していただけますか? ありがとう!

于 2013-04-19T18:39:37.247 に答える