2011-10-23 16 views
11

私がJPAプロジェクトを作成するたびにEclipseはプロジェクトにエラーがあると報告しますが、なぜそうなったのか分かりません。あなたはこれを試すことができますEclipseが私のJPAプロジェクトでエラーを報告します

enter image description here

Description Resource Path Location Type Column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 14 JPA Problem

Description Resource Path Location Type Column "title" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 18 JPA Problem

Description Resource Path Location Type Primary key join column "id" cannot be resolved on table "page" Page.java /BreakpointJPA/src/no/breakpoint/domain line 10 JPA Problem

enter image description here

+0

'ページ'テーブルの詳細を表示できますか? –

+0

私はまだタイムスタンプを実装していないので、それらがページエンティティにない理由があります。 – LuckyLuke

+0

私は、あなたのEntityがデータベースの状態を適切に反映していないとEclipseが言っていると思いますか? Eclipseはどのデータベースと連携しているのですか? 「adesnqhp_javaee」と表示されたDBを使用していない可能性がありますか? –

答えて

26

私は同じ問題を抱えていましたが、私のためのソリューションは、データベース接続をリフレッシュしました。

JPAビューを開き、データソースエクスプローラを見つけます。データベース接続を開き、データベースに接続してリフレッシュします。次に、ファイルを変更して保存します。@Column(name = "")注釈をIDフィールドに追加しました。その後、エラーメッセージが表示されなくなり、Columnアノテーションが追加されました。

この問題は、最初の接続を確立した後で、接続が閉じられた後にデータベーステーブルを読み込むように見えます。だから、私のように、foo_idからidだけにフィールド名を変更するなど、データベース内のこの最初の接続の後にいくつかの変更を加えた場合、Eclipseはそれを知らず、このエラーが発生します。

+5

Project Explorer(Juno Service Release 2)を使用してJPAの手動検証を強制することもできます。プロジェクトを右クリックし、 "Validate"を選択します。これにより、検証を強制するだけで、ソースファイルに望ましくない変更を加える必要がなくなります。 – mrjmh

+0

既存のdbテーブルからクラスをインポートしましたが、「カタログYはテーブルYを解決できません」というメッセージが表示されていました。私はEclipseで生成されたすべてのクラスのJavaコード内のカタログ情報(エンティティがインポートされたデータベーススキーマの名前に設定されていた)を削除しましたが、問題は消えました。 – Nick

0

:私は下の画像との誤差を追加

@Id 
@GeneratedValue(strategy=GenerationType.AUTO) 
@Column(name = "id", unique=true, nullable=false) 
private int id 
+0

タイトルに似ています:@Column(name = "title") –

0

はコード@Columnの引用符の内側に支援をして試してみてください(名前=」 ")。または、JPA Detailsビューを開き、カラム名をコンボで表示してカラムオプションを表示します。 @Table(name = "page")注釈には検証エラーがないので、Eclipseがページテーブルを見つけているように見えます。

0

注釈は正しく表示されます。プロジェクトのクラスパスは適切ですか? idフィールドとtitleフィールドを持たずにエンティティを構築してみてください。

1

プロジェクトにはJPA/JPA2インターフェイスが含まれていますか? Mavenを使用している場合は、クラスに依存関係を含める必要があります。私は、インポート宣言には赤い線が現れていないので、それらが存在すると仮定していますが、ただ安全であることを確認する必要があります。 JPA2依存性については

、あなたが使用することができます。

<dependency> 
    <groupId>org.hibernate.javax.persistence</groupId> 
    <artifactId>hibernate-jpa-2.0-api</artifactId> 
    <version>1.0.0.Final</version> 
</dependency> 
+0

あなたの質問を再読したところ、私の答えは問題に関連している可能性は低いと認識しましたが、問題。 –

2

読むこれは、簡単に

あなたの問題を解決したい場合は、データベースには問題はありません。プロジェクトにJPA機能を追加するときに行う、同じデータベースへのEclipseからの新しい接続の作成が必要です。

手順: -
mysqlプロンプトから新しいデータベースを作成します。
Eclipse/MyEclipseでプロジェクトを右クリックし、「プロパティ」に移動します。
左側のEclipse/MyEclipseタブをクリックし、JPAサブメニューをクリックします。
次に、[新しい接続の作成]をクリックします。新しいConnection名を入力します。同じデータベースを追加します。 (データベースも変更することもできますが、同じデータベースでも変更できます)。
接続をテストし、[完了]をクリックします。
初めて新しく作成した接続名を表示しません。 OKをクリックするとそのウィンドウが閉じます。

次に、[Project]を右クリックし、[Propeties]をクリックします。これで、そのConnectionドロップダウンリストに新しく作成されたConnectionが表示されます。 Selct thatと[OK]をクリックします。

あなたのエラーは消えます。

このエラーの考えられる理由:
Eclipseは、persistence.xmlを使用してプロジェクトを使用して接続するたびに初めてデータベースと接続しますが、初めて使用します。
それ以降、特にデータベース側(テーブル名など)からの変更は、Eclipseからエラーをスローします。

ありがとうございます。

4

しかし、私はちょうど同じ問題を抱えており、より迅速なアプローチで解決しました。

  1. プロジェクトのプロパティ - へ> JPA
  2. 変更接続。ヒットが適用されます。
  3. 接続を以前の値に変更します。ヒットが適用されます。

これは誰かを助けることを望みます。

2

私は同じ問題を抱えていました。ここではクリーンプロジェクト

  • 更新
  • を選択し、データ・ソース・エクスプローラー
  • を選択し、接続し、右クリック
  • に接続
    • ゴーをリフレッシュし、私は

      1. それを解決する方法でありますGoプロジェクトメニュー
      2. それがプロパティ - でちょうど古い接続した私の場合は、クリーン
  • 0

    を選択> JPA->接続を追加します。リフレッシュは役に立ちません。 データベースの正しい接続は、リフレッシュされない場合に役立ちます。

    2

    データソースエクスプローラでデータベース接続を切断し、データベース接続を接続した後、プロジェクトを右クリックして[検証]をクリックします。

    私はそれがあなたを助けてくれることを願っています。

    関連する問題