JPA 使用@Where 注解实现全局过滤

以你之姓@ 2024-05-23 20:40 111阅读 0赞

一、背景介绍

在互联网项目中,通常删除都不是物理删除,而是逻辑删除

那么在展示数据的时候需要过滤掉已删除的数据。而 @Where 注解可以说就是为此而设计的。

  1. /**
  2. * Where clause to add to the element Entity or target entity of a collection. The clause is written in SQL.
  3. * A common use case here is for soft-deletes.
  4. *
  5. * @author Emmanuel Bernard
  6. */
  7. @Target({
  8. TYPE, METHOD, FIELD})
  9. @Retention(RUNTIME)
  10. public @interface Where {
  11. /**
  12. * The where-clause predicate.
  13. */
  14. String clause();
  15. }

大致意思为通常添加在集合实体类上作为sql 的where条件使用,常见的使用方式是软删除
因为是where 子句的条件,所以写的是数据库字段的名称与实际结果。

二、使用方法

1、在集合上添加
  1. @Where(clause = "status != \"delete\"")
  2. private List<OptMenu> children= new ArrayList<>(0);
2、在实体类上添加
  1. @Entity
  2. @Data
  3. @Table(name = "opt_menu")
  4. @Where(clause = "status not in('delete', 'hidden')")
  5. public class OptMenu {

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读

    相关 tomcat 全局参数过滤

    因为输入参数的多样性,我一直怀疑能否做全局性的参数过滤。没想到看tomcat的安全防护时竟然有这个建议。这本书可以在百度文库中搜到。 该书说道:Tomcat Valve可将程

    相关 JPA注解

    JPA注解 (1)@Table 当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前

    相关 JPA注解

    1. JPA概述 (1)JPA(Java Persistence API)是java中的持久层API; (2)作用:使应用程序以统一的方式访问持久层; (3)JP