We are nesting several entities. However upon retrieving we only want to get those entities which are active.
@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;
}
When requesting the Systemproperties
I only want to get the properties that are active
(active = 1).
Searching around I found some hibernate annotations and the possibility to use subqueries. However both don't really work for me. Even though we are currently using hibernate I'm considering to replace it with Eclipselink, because we currently have to use eager loading and we are likely to run into performance problems with that. The subqueries don't really work well, because we are nesting several levels.
Eclipselink seems to have a @Customizer annotation that could work, however it seems to follow a different concept then the hibernate @FilterDef
annotation and would cause additional overhead when switching.
The @JoinColumn
doesn't seem to allow further filtering. Is there a standard JPA way to solve this problem?