2017-01-24 4 views
5

私が構築しているサービスは、ベンダの「外部ID」に付属の外部システムからデータを受信します。私は私達のデータベースでは、このデータを保存すると、私もそれに自動生成されたIDを割り当てます。非IDフィールドに基づいてマージするJPA機能はありますか?

@Entity 
public class Content { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private Long externalId; 

// many other fields 
} 

外部システムは、(同じ外部IDを持つ)同じ内容のデータを再送する場合、それはにデシリアライズされます戸建コンテンツPOJO:

Content c = deserialize(json); 

ではなくidフィールドよりも、externalIdフィールドを使用して、データベースから対応する行をロードし、更新することができEntityManager.mergeのようなものはありますか?

+0

あるとは思いません。おそらくcreateQueryを介してエンティティを検索する必要があります。 externalIdに索引を作成する可能性があります。それにもかかわらず興味深い質問IMO – Eugene

答えて

0

ほとんどの場合、外部クライアントがあなたのIDを知らない場合、エンティティを取得するためにクエリを使用する必要があります(実際にはエンティティのIDのみが必要です)。 IDを取得したら、それを分離したエンティティに設定してマージを行うことができます。

これが役に立ちます。

関連する問題