Spring Data JPA实体状态检测之Persistabl

2020-04-25  本文已影响0人  邮差在行动
保存之前先检测entity状态
对实体的状态,Spring Data JPA提供了3种检测方式,请参看官方文档

网上大部分例子都是第一种检测方式,即检测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来的快。

上一篇 下一篇

猜你喜欢

热点阅读