2011-12-20 10 views
0

私はCustomerとTransactionの2つのオブジェクトを持っています。これらは次のようになります。ManyToOneマッピングに存在しない場合、オブジェクトはロードしません。

@Entity 
class Transaction { 
    @Id 
    long id;   

    @Column("CUSTOMER_ID") 
    long customerId; 

    @ManyToOne 
    @JoinColumn(name="CUSTOMER_ID", insertable=false, updatable=false, nullable=false) 
    Customer customer 
    ... 
} 

@Entity 
class Customer { 
    @ID 
    long id; 
    ... 
} 

問題は、偽の顧客番号を使用して、ある種の取引を特定することです。私が変えることは何もできず、私のコントロール外のさまざまな他のプロセスがそれに頼っているのは、伝統的なプラクティスです。私が行うことができるようにしたいのですがどのような

は、ダミー顧客取引のために戻って顧客番号を取得し、ちょうど私のトランザクションオブジェクトにヌルの顧客を持っています。ダミー顧客ではない取引の場合、私は顧客オブジェクトを設定したいと思います。理想的には、ダミーの顧客番号をテストして別のクエリを発行する必要はありません。

クエリを作成し、それにオブジェクトをマップするにはどうすればよいですか?私が試したすべてのものは、ダミーのポリシーIDのEntityNotFound例外で終わります。

答えて

0

デフォルト値はapropriatly注文のみ、最初の結果をフェッチすることにより、第2の来ることを確認し、適切な顧客レコードを選択し、デフォルトの「NO、顧客」レコードでUNION句ができUNIONを使用しました。 JPAでは

0

ManyToOneは、あなただけのヌルを取得する必要は何も参照しない場合。どのようにEntityNotFoundを取得しているのか分かりません。 JPAプロバイダにとっては、特定の問題である可能性があります。

+0

私は、Hibernateを使用しています。問題は、CUSTOMER_IDがnullの場合ではなく、nullではなくオブジェクトを参照していない場合です。対応する顧客オブジェクトを持たない特定の仮の顧客IDがあります。上記のように、残念ながら、それらは他のプロセスやシステムが依存しているため、私が削除できない遺産です。 – AndrewMcCall

+0

この問題は、Hibernateはこの問題を持っていないプロキシを使用しない他のJPA実装、遅延ロードを実装するためにプロキシを使用する方法に固有のものです。それをEAGERにすると問題が解決するはずです。 – James

+0

それは正常に動作している、彼らが存在する場合、エンティティがロードされていないことではありません。問題は、エンティティが存在しないとき、例外をスローするダミーの顧客の1つであるときです。 – AndrewMcCall

関連する問題