Как правильно получить вложенные коллекции Lazy с помощью Hibernate - PullRequest
0 голосов
/ 09 мая 2018

В методе @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 (). В моем случае пять запросов.

Есть ли способ получить эту ситуацию одним запросом?

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...