У меня есть 3 класса сущностей: (* 1001 * содержит объявление идентификатора для каждой сущности)
Таблица 1: Досье
@Entity
@Table(name = "DOSSIER", schema = "ADOP")
public class Dossier extends BaseAutoIncrementModel<Integer> implements BaseModelCode<Integer> {
...
}
Таблица 2: AlerteDossier
@Entity
@Table(name = "ALERTE_DOSSIER", schema = "ADOP")
public class AlerteDossier extends BaseAutoIncrementModel<Integer> implements BaseModelCode<Integer> {
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "FK_DOSSIER")
private Dossier dossier;
...
}
Таблица 3: AlerteEnvoi
@Entity
@Table(name = "ALERTE_ENVOI", schema = "ADOP")
public class AlerteEnvoi extends BaseAutoIncrementModel<Integer> implements BaseModelCode<Integer> {
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "FK_ALERTE_DOSSIER")
private AlerteDossier alerteDossier;
...
}
Что у меня есть атм:
CriteriaBuilder builder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<AlerteEnvoi> query = builder.createQuery(AlerteEnvoi.class);
Root<AlerteEnvoi> root = query.from(AlerteEnvoi.class);
query.select(root);
List<Predicate> predicateList = new ArrayList<>();
...
Как вы можете видеть в AlerteEnvoi
таблица AlerteDossier
загружается с нетерпением, хотя в AlerteDossier
таблица Dossier
загружается лениво.
Мне нужно создать используя Criteria Api, оператор выбора для AlerteEnvoi
, где Dossier
также будет загружен в сущности AlerteDossier
. Я знаю, как мне нужно получить AlerteDossier
в пределах AlerteEnvoi
, если AlerteDossier
будет загружен лениво (root.fetch("alerteDossier", JoinType.LEFT
), я не имею ни малейшего понятия, как получить подобъект суб-объекта. сущность хотя. Кто-нибудь может мне помочь с этим?