保存之前先檢測entity狀態(tài)
對實(shí)體的狀態(tài),Spring Data JPA提供了3種檢測方式细燎,請參看官方文檔:
- 檢測id和version
- 實(shí)現(xiàn)Persistable接口
- 實(shí)現(xiàn)EntityInformation接口
網(wǎng)上大部分例子都是第一種檢測方式岂膳,即檢測id和version修肠,下面舉個實(shí)現(xiàn)Persistable接口的例子:
@Setter
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseBean implements Persistable<String> {
@Transient
private boolean isNew = true;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "com.test.MyIdentifierGenerator")
@Column(name = "id")
private String id;
@Version
@Column(name = "version")
private Integer version;
@CreatedBy
@Column(name = "created_user")
private String createdUser;
@CreatedDate
@Column(name = "created_date")
private Date createdDate;
@LastModifiedBy
@Column(name = "modified_user")
private String modifiedUser;
@LastModifiedDate
@Column(name = "modified_Date")
private Date modifiedDate;
@Override
public boolean isNew() {
return this.isNew;
}
@PostLoad
public void markNotNew() {
this.isNew = false;
}
}
PS:
個人覺得還是不要總是檢測id和version林说,因?yàn)槟抢锩嬉婕皺z測邏輯古程,不如直接標(biāo)識isNew來的快蔼卡。