В методе @PostConstruct
я извлекаю родительскую сущность, соединяющуюся с одной из коллекций, и инициализирую остальные из них, используя Hibernate.initialize(obj)
, но у некоторых из них есть отношения, которые мне тоже нужно получить.
Person person = /** SELECT Person JOINING WITH ADDRESS, CITY AND THE REST **/
Hibernate.initialize(person.getEmails());
Теперь мне нужно инициализировать Collection @OneToMany Phones (), но внутри Phones () у меня есть сущность PhoneType:
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "tipo_id", nullable = false)
private PhoneType type;
Если я просто Hibernate.initialize (person.phones ()), тип не будет загружен.
Я нашел «решение» в другой теме: https://stackoverflow.com/a/47611257/8107849
То есть инициализировать телефоны () и forEach все телефоны () инициализировать тип, например:
Hibernate.initialize(person.getPhones());
person.getPhones().forEach(phone -> Hibernate.initialize(phone.getType()));
Но, анализируя запросы, он дал мне один запрос к getPhones () и один запрос на разные Type (). В моем случае пять запросов.
Есть ли способ получить эту ситуацию одним запросом?
Заранее спасибо