
保存之前先檢測entity狀態(tài)
對實體的狀態(tài),Spring Data JPA提供了3種檢測方式,請參看官方文檔:
- 檢測id和version
- 實現Persistable接口
- 實現EntityInformation接口
網上大部分例子都是第一種檢測方式,即檢測id和version,下面舉個實現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,因為那里面要涉及檢測邏輯,不如直接標識isNew來的快。