我有一个基本实体,它包含一个名为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”列表仅保留国家提交的实体是“有效”
答案 0 :(得分:0)
使用@Filter
作为
@Filter(name, condition)
或@Where
为
@where(state = STATE.ACTIVE.getValue())
答案 1 :(得分:0)
JPA中没有过滤器或注释,也无法使用注释过滤集合实体。
我建议您检索A实体并仅获取活动B实体。
答案 2 :(得分:0)
在JPA中没有标准的方法可以做到这一点。
一种方法可能是创建一个过滤表并映射到视图而不是表的视图。
如果您使用的是EclipseLink,则可以使用@AdditionalCriteria
答案 3 :(得分:0)
我建议您使用数据库视图执行此操作。访问包含所有实体(包括软删除实体)的基础表,并访问未删除实体的视图