java - Spring Data JPA 实体的有效标志

标签 java spring hibernate jpa

我正在寻找这样的功能,我可以用例如@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/

相关文章:

java - 如何用java编写自己的比较器类?

java - Java中解析XML的高效方法

java - 实现 JpaRepository 的最佳实践

hibernate - JavaFX BooleanProperty 和 Hibernate

hibernate - Hibernate Envers跟踪引用类的更改

java - 如何检索存储在 Java ArrayList 中的对象值

java - 我们可以使用 Java EE Servlet 作为后端并使用 Angular 作为前端吗?

angularjs - 在 Spring Security 或 Angular 中注销时清除 Cookie

mysql - Spring boot @Query 使用原生查询时出现问题

java - CacheProvider 的异常 NoClassDefFoundError