美文网首页
Spring Data JPA实体状态检测之Persistabl

Spring Data JPA实体状态检测之Persistabl

作者: 邮差在行动 | 来源:发表于2020-04-25 08:12 被阅读0次
保存之前先检测entity状态
对实体的状态,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来的快。

相关文章

网友评论

      本文标题:Spring Data JPA实体状态检测之Persistabl

      本文链接:https://www.haomeiwen.com/subject/jvriihtx.html