В связи с моим предыдущим вопросом я хочу, чтобы все дочерние объекты загружались, поскольку у меня есть несколько потоков, которым может потребоваться доступ к данным (и, таким образом, избежать ленивые загрузки). Я понимаю, что для этого нужно использовать ключевое слово "выборка" в запросе (EJB QL). Вот так:
select distinct o from Order o left join fetch o.orderLines
Предполагая модель с классом Order
, которая имеет в ней набор OrderLines
.
Мой вопрос заключается в том, что ключевое слово "различное" кажется необходимым, так как в противном случае я возвращаю Order
для каждого OrderLine
. Я поступаю правильно?
Возможно, что более важно, есть ли способ задействовать все дочерние объекты, независимо от того, насколько они глубоки? У нас есть около 10-15 классов, и для сервера нам понадобится все загруженное... Я избегал использования FetchType.EAGER
, поскольку это означало, что он всегда нетерпелив и, в частности, веб-интерфейс загружает все - но, возможно, это путь - Это то, что вы делаете? Кажется, я помню, как мы пытались это сделать раньше, а затем получать действительно медленные веб-страницы, но, возможно, это означает, что мы должны использовать кеш второго уровня?