2014-01-11 10 views
6

(私のモデルプロジェクトでは永続クラス、別名Java Beanのみ)コンポジットの主キーを持つクラスがあります。これをマップするために、私は2つの@Idを自分のクラスに使用しました。冬眠4前は不可能でしたが、今はOKです。だから問題は、eclipseがこのクラスでエラーを表示していて、古い方法で行うべきだということです。このよう :私はそれを実行した場合、コードは正常に動作しますのでコンポジットプライマリキーに複数の@Idを使用するとEclipseエラーが発生する

False error

私が言ったように、それは、偽のエラーです。 私はJBoss Toolsプラグインをeclipseにインストールしていますが、エラーがEclipseかEclipseによって発生しているかどうかはわかりません。

誰でもこの問題の解決方法を知っていますか?アプリの実行を妨げているわけではありませんが、エラーが常に表示されるのは迷惑なことです。

--- EDIT ---だから、

、今私がプロジェクトにJPAファセットを無効にし、エラーが停止しているため、問題は、JBossツールである知っています。しかし、私はJBoss Toolsが提供する機能を使うことができればいいと思います。まだ解決策はありません。

+0

私はそれがHibernate 4で可能であることを知らなかった:質問から見つけた。私はEmbeddableクラスでEmbeddedIdを提案しようとしていました。 – Hrishikesh

+0

JPAファセットはJBoss Toolsの一部ではなく、Webtoolsプロジェクトの一部であるEclips Dalyプロジェクトのフォームになります。 JBoss ToolsはWebtoolsに基づいています。 JBoss Toolsユーザーフォーラム(https://community.jboss.org/en/tools)で、このような質問をすることができます。 – dgolovin

+0

だから、JPAの仕様に従ってIdClassが必要です。 –

答えて

18

それはもう1年遅れですが、私は今この問題を自分自身に直面しました:-)

Eclipseでこのエラーをオフにすることができます。カテゴリの種類]セクションの外観の下

Preferences-> JavaのPersistence-> JPA->エラー/警告

に行く「は、複数のIDマッピングが定義されたときにIDクラスが使用されなければなりません。」それを「エラー」から「無視」(またはそれに与える重大度)に変更します。

+1

ありがとう、私はより良いIDEに切り替え、もうEclipseを使用しないでください。しかし、私はあなたの答えは他の人に役立つと思います。 –

+0

その良い説明。 MAC STSでは、その問題を解決していませんが。 –

+0

ありがとうございます。これは、HibernateではなくEclipseLinkを使用するプロジェクトでも役立ちました。 –

-1

だけでなく、あなたがuは、複合キークラスを持つべき複合キーを持っている場合は、次のようにマッピングされ

何か:

@Entity 
@IdClass(PK_BP.class) 
@Table(name="BP_BIS") 
public class BP_BIS implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 

    @Id 
    private String BP_MODE; 
    @Id 
    private String BP_BD; 

複合キークラスは、このようになります:

public class PK_BP implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 

    private String BP_MODE; 
    private String BP_BD; 

    public PK_BP() 
    {} 

    public PK_BP(String bP_MODE, String bP_BD) { 
     this.BP_MODE = bP_MODE; 
     this.BP_BD = bP_BD; 
    } 

} 
+0

Opは複合キーなしで新しい方法を求められます。 –

関連する問題