我正在寻找这样的功能,我可以用例如@ValidFlag
来注释 boolean 字段;
@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity implements Serializable {
@CreatedDate
Date creationDate;
@LastModifiedDate
Date updateDate;
@ValidFlag
Boolean isActive = Boolean.TRUE;
}
因此,例如,当我插入具有此字段值 false
的实体时,存储库获取操作不应获取该实体,但在某种程度上,它可以作为脏标志。对于扩展此基本实体的所有实体的每个获取操作,隐藏此额外的列检查将是一个非常好的方法。
如果本地不支持(看起来像那样),您能想出一种方法通过在 Hibernate/JPA 上添加一些自定义逻辑来处理这个问题吗?
最佳答案
看看如何使用 Hibernate 实现软删除。 这也适用于您的情况。
在实体上添加 @Where 子句以从提取中排除非 Activity 实体:
@Where(clause = "isActive = true")
有两篇关于此的精彩文章:
https://vladmihalcea.com/the-best-way-to-soft-delete-with-hibernate/ https://www.thoughts-on-java.org/implement-soft-delete-hibernate/
关于java - Spring Data JPA 实体的有效标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47566331/