JPA 一对多滤波
2022-09-01 13:12:20
我们正在嵌套多个实体。但是,在检索时,我们只想获取那些处于活动状态的实体。
@Entity
public class System {
@Id
@Column(name = "ID")
private Integer id;
@OneToMany(mappedBy = "system")
private Set<Systemproperty> systempropertys;
}
@Entity
public class Systemproperty {
@Id
@Column(name = "ID")
private Integer id;
@Id
@Column(name = "ACTIVE")
private Integer active;
}
请求 I 时,我只想获取 (active = 1) 的属性。Systemproperties
active
四处搜索,我发现了一些休眠注释以及使用子查询的可能性。然而,两者都不适合我。尽管我们目前正在使用休眠状态,但我正在考虑用Eclipselink替换它,因为我们目前必须使用预先加载,并且我们可能会遇到性能问题。子查询实际上效果不佳,因为我们嵌套了多个级别。
Eclipselink似乎有一个@Customizer注释可以工作,但是它似乎遵循与休眠注释不同的概念,并且在切换时会导致额外的开销。@FilterDef
似乎不允许进一步过滤。有没有标准的JPA方法来解决这个问题?@JoinColumn