Spring Data JPA实体状态检测之Persistabl
2020-04-25 本文已影响0人
邮差在行动
![](https://img.haomeiwen.com/i9280850/ed6d1ca6e1c1f161.png)
对实体的状态,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来的快。