1

我有一个基础实体,它包含一个名为 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”的实体?
原因是,如果我有一个包含实体“B”列表的实体“A”,当我从数据库中检索“A”的实例并初始化它时,我希望“B”的列表只包含提交国家为“活动”的实体

4

4 回答 4

0

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

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

于 2012-10-17T11:08:36.070 回答
0

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

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

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

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

于 2012-10-17T14:13:44.143 回答
0

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

于 2015-01-06T00:31:57.843 回答
-1

@Filter用作_

 @Filter(name, condition)

@Where作为

 @where(state = STATE.ACTIVE.getValue())
于 2012-10-16T18:36:11.777 回答