2011-09-19 88 views
6

Eclipse(Indigo)で簡単なEJB + JPAプロジェクトを作成しようとしています。EclipseのJPAプロジェクトで問題 - アノテートされたクラスのエラー@Entity:テーブル "xxx"を解決できません

  • 対象:既存のGlassfishのサーバ
  • 設定:ウィンドウJPAファセットでEJBモジュール+ GlassFishの配備記述子ファイル+のJava + JPA 私は(成功のping)PostgresのDBへの接続を宣言
  • 私は新しいEJBプロジェクト作成しました

エンティティを定義しようとすると問題が発生します。テーブル「従業員」は解決できません。 @Table注釈に指定された名前パラメータを追加しましたが、これは機能しませんでした。私のpersistence.xmlファイル :私のテーブルが存在する場合は、 "知って日食" どのように "JDBC/baza1Postgres"
:GlassFishので

<persistence-unit name="pu_name"> 
    <jta-data-source>jdbc/baza1Postgres</jta-data-source> 
</persistence-unit> 

私は名前のJDBCリソースを定義していますか?他に何を設定する必要がありますか?あなたはJava EE 6 tutorialを見て、どこの実体を探すためにあなたのpersistence.xmlファイルで指定する必要が

答えて

3

が、ここそこから取られた例です:

Persistence Units

A persistence unit defines a set of all entity classes that are managed by EntityManager instances in an application. This set of entity classes represents the data contained within a single data store.

Persistence units are defined by the persistence.xml configuration file. The following is an example persistence.xml file:

<persistence> 
    <persistence-unit name="OrderManagement"> 
     <description>This unit manages orders and customers. 
      It does not rely on any vendor-specific features and can 
      therefore be deployed to any persistence provider. 
     </description> 
     <jta-data-source>jdbc/MyOrderDB</jta-data-source> 
     <jar-file>MyOrderApp.jar</jar-file> 
     <class>com.widgets.Order</class> 
     <class>com.widgets.Customer</class> 
    </persistence-unit> 
</persistence> 

This file defines a persistence unit named OrderManagement, which uses a JTA-aware data source: jdbc/MyOrderDB. The jar-file and class elements specify managed persistence classes: entity classes, embeddable classes, and mapped superclasses. The jar-file element specifies JAR files that are visible to the packaged persistence unit that contain managed persistence classes, whereas the class element explicitly names managed persistence classes.

も使用して、このstackoverflow questionを見てみましょう、>検証、JPAバリ - Eclipseでは

、ウィンドウに移動 - >設定:あなたは「表のxxxは解決できない」エラーにこの解決策を見つけたエンティティ注釈

30

を持って、あなたのクラスのためにスキャンすることができ冬眠ビルドのためにオフにします。

時にはあなたがそれに行くために、新しいデータベーススキーマと一緒にアプリを開発しているが、あなたはこれを取得:

Schema "null" cannot be resolved for table "XXXX".

これはおそらく、とにかく、デフォルトでオンにすべきではありません。古いデータベースに合うように新しいアプリケーションをビルドするよりも、新しいアプリケーションをゼロから作り上げる可能性が高く、古いものからビルドする場合でも、EclipseのJPAツールにはテーブルの関数からビルドエンティティがあります」

+0

ソース:http://adterrasperaspera.com/blog/2009/08/11/eclipselink-jpa-in-eclipse-dumb-error-message/ –

4

Eclipseで作成する幸せな私は、私はあなたがあまりにも検証をオフにすることができると思いエンティティ

からテーブルを作成する>右プロジェクト> JPAツール]をクリックします

。JPAツールを経由してテーブルを作成する必要がありましたが、テーブルを作成することは、より理にかなっているようだ。

3

私はEclipseを使用しています。私は、Eclipseが "データソースエクスプローラ"JPA eviromentのウィンドウ(おそらくコンパイルする必要はありませんが、同じEclipse IDEでデータベースをチェックするのに便利です)。その後、私はそのウィンドウでデータベースへの接続を作成したとき、私は、接続のプロパティで、問題の変更データを得た:

は働いていません(表が解決することはできません):固定

Database: my_database 
URL: jdbc:mysql://localhost:3306 
User Name: jpa_user 
Password: jpa_pass 

(私は、URLフィールドにデータベースを追加します):

Database: my_database 
URL: jdbc:mysql://localhost:3306/my_database 
User Name: jpa_user 
Password: jpa_pass 

テーブルは、データベース内の大文字とされていない場合、あなたの事業体に=「」)@Table(名前を使用することを忘れないでください。

+0

でした新しいデータベース接続を追加するときに混乱を招くことはほとんどありません。ウィザードはdb nameを要求しますが、上記のURLにURLを追加する必要があります。 URLにデータベース名を追加すると、すべてが期待通りに機能しました! –

0

maxmcbyteの答えを使用する別のオプションは、特定のプロジェクトに対してのみ設定することです。プロジェクトを右クリックし、[検証]を選択します。プロジェクト固有の設定を有効にし、JPA Validator for Buildを無効にします。

1

私はこのエラーがあり、非常に曲がりくねった作業をすることができました。私はPostgreSQLを使用しています。

まず、上記のようにしてビルドの検証を無効にしました。それから、手動で検証を実行して物事をつなぎました。私の措置は基本的に次のとおりです。

1:データソースエクスプローラを介してデータベースに接続します。接続が正しい状態になっていることを確認してください。私はTABLESに行ってリフレッシュします。接続でリフレッシュを実行しても、テーブルは更新されませんでした。

2:おそらくオプションですが、JPAツールを使用してスキーマをデータベースにエクスポートしました。ここでも、手順1と同じようにリフレッシュします。

3:エンティティとエンティティの両方でエンティティに注釈を付けます。エンティティに名前を付け、テーブル注釈にNAME、CATALOG、およびSCHEMAを追加します。

@Entity(name="DBAssembly") 
@Table(name="DBAssembly",catalog="lag",schema="public") 

4:検証を手動で実行します。カタログを追加することが重要でした。それはとてもかわいいです。

+0

Catalog + schema + disconnect/connect/refreshを追加すると、データベースへのDataSourceExplorer Connectionが動作しました。Karlありがとうございます。 – Deian

0

この作品だが、maxmcbyte(感謝!!)の回答に加えて、いくつかの回それだけでいくつかのプロジェクトのため、この解決策を適用することをお勧めし、アクセスすることにより、個別にそれを実行します。プロジェクトのプロパティを>検証>にを回し"プロジェクト特有の設定を有効にする"をオフからのJPAバリデーションを作成する列。画像を見る

Config

関連する問題