在字段上设置where子句

时间:2012-10-16 18:29:13

标签: 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注释方法设置生成的查询的where子句只检索状态字段为“ACTIVE”的实体?
原因是,如果我有一个实体“A”,其中包含实体“B”的列表,当我从DB检索“A”的实例并初始化它时,我希望“B”列表仅保留国家提交的实体是“有效”

4 个答案:

答案 0 :(得分:0)

使用@Filter作为

 @Filter(name, condition)

@Where

 @where(state = STATE.ACTIVE.getValue())

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

在JPA中没有标准的方法可以做到这一点。

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

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

http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_additionalcriteria.htm#additionalcriteria

答案 3 :(得分:0)

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