2016-04-24 7 views
0

REST-APIから取得したエンティティを保存しています。私はSpring JPA reposを使っています。 Imは、保存するときにすべてのエンティティのIDを生成します。 sanveAndFlush()メソッドは、エンティティのIDが既に存在する場合にのみウォッチし、それを再び保存しません。しかし、私の問題は、私はIDを生成し、それは単に保存時にエンティティを複製することです。どのように私はテキストや何かのようなエンティティの他の何かとこれを比較することができます。保存されたエンティティを比較します

ハウスキーピングサービス:

public void saveOrUpdate(Tweetpost tweetpost) { 
     tweetRepository.saveAndFlush(tweetpost); 
    } 

Tweetpostエンティティ:

@Id 
    @GeneratedValue 
    @Column(columnDefinition = "INT unsigned") 
    private Integer id; 

    @Column(columnDefinition = "LONG") 
    private long tweetid; 

    @NotEmpty 
    @Length(max = 255) 
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false) 
    private String profileImageUrl; 

    @NotEmpty 
    @Length(max = 64) 
    @Column(columnDefinition = "VARCHAR(64)", length = 64, nullable = false) 
    private String fromUser; 

    @NotEmpty 
    @Column(columnDefinition = "TEXT", nullable = false) 
    private String unmodifiedText; 

    @NotNull 
    @Column(columnDefinition = "DATE", nullable = false) 
    private Date createdAt; 

    @Length(max = 255) 
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false) 
    private String url; 

    @Length(max = 255) 
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false) 
    private String displayUrl; 

    @Length(max = 255) 
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false) 
    private String expandedUrl; 

    @Length(max = 255) 
    @Column(columnDefinition = "VARCHAR(255)", length = 255, nullable = false) 
    private String mediaUrl; 
+0

少し明確にしたいものを説明してください。主キーなしでエンティティデータ(JSON)を渡しているようで、saveAndFlushメソッドで、このエンティティがいくつかの非pkフィールドに基づいて存在するかどうかを知ることができます。もしそうなら、なぜInteger id値を使用して、代わりにプライマリキーにする必要があるフィールドを作成しても構いませんか?または、渡されたフィールドを使用してsaveAndFlushメソッドを最初のクエリに更新できます。エンティティが存在する場合は、渡されたデータに基づいて変更します。そうでない場合は、エンティティをマージまたは保持します。 – Chris

答えて

0

これを試してみてください。

@GeneratedValue(strategy=GenerationType.IDENTITY) 
private Integer id;