Мы размещаем несколько объектов. Однако при извлечении мы хотим получить только те объекты, которые активны.
@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;
}
При запросе Systemproperties
я хочу получить только те свойства active
(active = 1).
Поиск вокруг я нашел несколько аннотаций спящего режима и возможность использовать подзапросы. Однако для меня это действительно не работает. Несмотря на то, что в настоящее время мы используем спящий режим, я рассматриваю возможность его замены с помощью Eclipselink, потому что в настоящее время мы должны использовать интенсивную загрузку, и с этим мы, вероятно, столкнемся с проблемами производительности. Подзапросы на самом деле не работают хорошо, потому что мы размещаем несколько уровней.
У Eclipselink есть @Customizer аннотация, которая могла бы работать, однако, похоже, она соответствует другой концепции, тогда аннотация hibernate @FilterDef
и при переключении вызовет дополнительные накладные расходы.
@JoinColumn
, похоже, не позволяет продолжить фильтрацию. Существует ли стандартный способ JPA для решения этой проблемы?