0

私は eclipse + eclipselink + maven2 + mysql + jpa 2.0 + Java SE を使用しています。

Eclipse を使用して、Entity クラスから MySQL テーブルを作成できます。persistence.xml は src/main/resources/META-INF/... にあります。

また、実稼働およびテスト用にEclipseで指定されたデータベース接続もあります。いずれかがプロジェクトで選択され、機能するようです。

プロジェクトで使用されるデータ ソースに応じて、選択したデータベースにテーブルが作成されます。データベース接続の詳細が無視されるため、persistence.xml の内容は無視されます (何が期待できるかわかりません)。また、persistence.xml を右クリックして [JPA Tools] > [Synchronize Class List] を選択すると、ファイルはエンティティ クラスで更新されます。

persistence.xml も必要です。そうしないと、どちらのデータベースにもテーブルが作成されません。(ファイル名を変更してテスト済み)

以前は、何かを入れてロードすることで、テスト用にいくつかの DAO メソッドを実行することもできました。また、プロジェクト内の JPA エンティティを一覧表示する「JPA」という名前の Eclipse パッケージ エクスプローラーのメニュー項目がありましたが、これはもう存在しません。

私はプロジェクトに変更を加えませんでした (夜だけコンピューターを閉じました)。次にプロジェクトを開いたとき、DAO メソッドを実行できなくなり、次のエラーが表示されました。

No Persistence provider for EntityManager named xxx

同じエラーは、DAO メソッドを持つメイン クラス、Eclipse によって実行された JUnit テスト、および Maven によって実行された同じテストにも発生します。

注: エンティティからテーブルを作成することはできます。

何かアドバイス?

4

2 に答える 2

0

問題は pom.xml にありました。

eclipselinkが必要だったので、休止状態に依存していました。

間違い:これは私が持っていたものです

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>4.1.3.Final</version>
</dependency>

右:そうなるはずだった

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.0.0</version>
  <scope>compile</scope>
</dependency>

可能な限りすべてを純粋にテストすることで、解決策を得ました。以前に同じpomとプロジェクトでテストを実行できたので、どうやって代替を試すことができたのかさえわかりません。

エラーのどれも、それがどのように機能していたかは、それが多少間違っている可能性があることを示唆していませんでした.

それが完全に正しいかどうかさえわかりませんが、少なくとも再び機能します。

于 2012-06-01T09:12:38.163 に答える
0

通常、これはリソース ディレクトリがアプリケーション コンテナーにデプロイされていないことが原因です。Eclipse でプロジェクトを右クリックし、プロジェクト エクスプローラーで [プロパティ] を選択します。次に、Deployment Assembly プロパティを選択し、「/src/main/resources」がデプロイされていることを確認します。

展開アセンブリ

于 2012-06-01T00:04:30.030 に答える