3

エンティティからmysqlデータベースへのJPAテーブルを作成するEclipseでの作業プロジェクトがありました(まだ学習中です)。残念ながら、「テスト」データベースと「本番」データベースが必要だったので、間違ったデータベースにテーブルが作成されました。選択されたデータベース接続がテスト用であるように見えたとしても、どういうわけか「本番」データベースの詳細を取得しました。私はプロジェクトを少しいじり、特定の正しい接続オブジェクトに接続するようにしました(テスト)。Eclipse (両方のデータベース) で db に ping を実行し、データ ソース エクスプローラーで db を確認できます。しかし、プロジェクトを右クリックして「JPA 'Tools' > 'Generate Tables from Entities'」を選択しても、プロジェクトのテーブルを作成できません。すべてが機能するように、作成はエラーなしで開始および終了しますが、どちらのデータベースにもテーブルが表示されません。(Eclipse データベース エクスプローラーまたはコマンド ラインから)。persistence.xml は、以前にそのテーブルを 1 つ作成しているので問題ありません。

唯一のエラーは、エンティティ アノテーションの「テーブル xxx を解決できません」と表示されているエンティティ クラスのエラーです。そして、私が見るように、それは作成されていないテーブルから来ています。

念のため、persistence.xml を次に示します。 http://pastebin.com/djPZei90

このプロジェクトは Maven プロジェクトでもあり、SVN を使用します。依存関係は、Eclipse/プロジェクトの maven によって正常にロードされ、SVN に問題はありません。

Maven のため、本番用とテスト用に 2 つの persistence.xml ファイル (ログイン資格情報とデータベース名の変更のみ) があります。最初の場所で、db-connection がチェックされ、間違ったファイルからロードされた可能性があります。(ただの推測)

また、テーブルを生成するときにscript.sqlを作成しようとしました。ファイルは見つかりましたが、完全に空でした。

とにかく問題は、どこにもテーブルを作成できないことです。私はこれに完全に困惑しています。これを修正するために私が探すべきヒントはありますか?

4

3 に答える 3

2

最初のリーディングで答えを正しく理解できなかったにもかかわらず、クリスは正しかった。他のプロバイダーで試してみましたが、誤って間違ったファイル (maven プロジェクトであるため 2 つの「persistence.xml」ファイル) を変更したか、他の理由で見つけられなかった可能性があります。指定されたプロバイダー (persitence.xml 内) を使用する必要があるというヒントが以前に与えられました。結局あまり気にしてなかったので。eclipselink を使用しているため、プロバイダーは実際に次のようにする必要があります。

    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

最初の試行で失敗し、これを解決するためにさらに数時間を費やさなければならなかったにもかかわらず、クリスに感謝します。

于 2012-05-28T08:09:35.190 に答える
1

問題を解決できますか?残念ながら、私は同じまれな問題に遭遇しましたが、それはまったく意味がありません。JPAツールは、persistence.xmlにマッピングクラスを書き込みますが、何らかの理由でマッピングクラスを追加しません。

先週はすべてが完璧に機能しましたが、現在はすべてf**です。別のワークスペースで新しい独立したプロジェクトを作成したこともありますが、同じバグが発生します。明らかにそれは日食/プラグインのバグです、さもなければ私はそれを説明することができません。Eclipse4.2.0での作業。私は幸せではない。

編集:Dali Tools、JPA Configurator、Seam3Plugin作成エンティティを削除した後は再び機能するようです。理由はわかりませんが、おそらく競合ですが、それでも1か月前ではなく、現在発生した理由は説明されていません。それ以来、Eclipseのインストールをまったく変更しませんでした...

于 2012-10-30T07:47:32.817 に答える
0

これに一日を費やしてください。

Eclipse (Indigo btw) で完全に新しい (JPA) プロジェクトを作成しました。そのための新しいデータベース(mysql)も作成しました。

そのためにEclipseで接続を行いました。ファイル > 新規 > その他... > 接続プロファイル。

新しいパッケージ構造を作成し、Eclipse に「persistence.xml」 (src/META-INF/persistence.xml) を作成させます。

Eclipseウィザードで「JPA Entity」クラスを作成しました。('id' (PK) および 'content' フィールドを追加) 以前のプロジェクトから新しいプロジェクトに 'pom.xml' をコピーしました (プロジェクト名などのマイナーな変更のみを行いました)。

また、以前のプロジェクトから「persistence.xml」ファイルをコピーしました (src/main/java/META-INF/、「test」は含まれていません)。永続性ファイルからデータベースの詳細とログイン資格情報を変更しました。

Eclipse でプロジェクト「Maven プロジェクト」を作成しました (プロジェクト名を右クリック > [構成])。Maven プロジェクトになったため、デフォルトの「persistence.xml」は間違った場所にあったため削除できました。(プロジェクトを Mavenizing すると、pom.xml で存在しない jar からすべてのエラーが削除されました)

プロジェクトのテーブルを再度作成しようとしました(同じエラーですが、待ってください...)。

プロジェクトを右クリック > Maven > Maven Nature を無効にする

次に、再びMavenプロジェクトにし、プロジェクトを右クリック>構成> ...

テーブルを再度作成しようとすると、それらが作成されました。すべてが機能します!

図に行く!

私が思っていたように、すべてが大丈夫だったようです。Maven (プラグイン) + Eclipse に何らかのバグがあるようです。

前のプロジェクトで同じトリックを行っても役に立ちません。ウィザードを使用してエンティティクラスを作成しました(既存のものを削除しました)。<class> 宣言が「persistence.xml」に追加されていますが、それでもテーブルは実行されません。(mavenの性質を削除して再度追加しようとしました)

プロセスで何かを見逃している可能性があります/別の方法で行ったか、全体的に間違っている可能性があります. しかし、同じトリックを使用して、他のプロジェクトが機能せず、他のプロジェクトが機能しないことを考えると、大きな厄介なバグがあるようです。

于 2012-05-25T11:52:52.947 に答える