Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 在字段上设置where子句_Jpa_Annotations_Where Clause - Fatal编程技术网

Jpa 在字段上设置where子句

Jpa 在字段上设置where子句,jpa,annotations,where-clause,Jpa,Annotations,Where Clause,我有一个基本实体,它包含一个名为State的枚举字段 public enum State { DELETED(0), ACTIVE(1) ; private int value; private State(int value) { this.value = value; } public int getValue() { return this.value; } } 是否有一种JPA注释

我有一个基本实体,它包含一个名为State的枚举字段

public enum State {

    DELETED(0),
    ACTIVE(1)
    ;

    private int value;

    private State(int value) {
        this.value = value;
    }

    public int getValue() {
        return this.value;
    }

}
是否有一种JPA注释的方法来设置生成查询的where子句,以仅检索状态字段为“活动”的实体?

原因是,如果我有一个实体“A”,它包含一个实体“B”列表,那么当我从DB检索“A”的实例并初始化它时,我希望“B”列表只包含状态字段为“活动”的实体

 @Filter(name, condition)
 @where(state = STATE.ACTIVE.getValue())
@其中

 @Filter(name, condition)
 @where(state = STATE.ACTIVE.getValue())

JPA中没有过滤器或where注释,也无法使用注释过滤集合实体


我建议您检索A实体并只获取活动的B实体。

在JPA中没有标准的方法来实现这一点

一种方法可能是创建一个过滤表并映射到视图而不是表的视图

如果您使用EclipseLink,则可以使用@AdditionalCriteria


我建议您使用数据库视图执行此操作。访问包含所有实体(包括软删除实体)的基础表,并访问未删除实体的视图

我不使用JPA 2。我的maven依赖关系是:
javax.persistence api 1.0.2
@Filter
@Where
JPA注释还是Hibernate注释?我需要成为纯粹的JPA,我没有在
javax.persistence
package中找到这些注释谢谢你的回答。也许你知道任何纯JPA注释或任何其他纯JPA方法(除了编写JPQL)来实现这一点吗?对于给定的问题,可以使用“@Filter”和“@Where”注释