2016-04-24 120 views
0

保存一些實體,我從REST-API中獲取。我使用Spring JPA回購。我保存時爲每個實體生成一個ID。 sanveAndFlush()方法只會監視實體的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;