Jpa 在字段上设置where子句
我有一个基本实体,它包含一个名为State的枚举字段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注释
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”注释