2016-04-24 116 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;