Почему JPA не предлагает метод loadChildren () для лениво загруженных отношений? - PullRequest
4 голосов
/ 03 октября 2009

Бывают моменты, когда я хочу определить отношения как лениво загруженные, так как в 90% случаев я не хочу дочерних сущностей, но при этом имею возможность получить всю иерархию сразу, при определенных обстоятельствах. Я не хочу достичь этого с помощью именованного запроса, поскольку иерархия родитель-потомок полезна, когда я преобразую, например, в. Формат JSON. На данный момент мой грязный взлом состоит в том, чтобы вызвать .getChildEntities (). Size () для принудительной загрузки в той же транзакции.

Есть ли лучший способ?

Ответы [ 2 ]

2 голосов
/ 03 октября 2009

Зависит от реализации JPA, конечно. Некоторые (большинство) будут загружать все с тем вызовом метода, который вы цитируете, но некоторые могут выполнить запрос COUNT (*), чтобы получить размер также по причинам управления памятью (не желая загружать все элементы для случаев, когда их много)

- Энди ( DataNucleus )

0 голосов
/ 21 января 2011

Возможно, вы можете использовать предложение JOIN FETCH

http://download.oracle.com/docs/cd/E16764_01/apirefs.1111/e13046/ejb3_langref.html#ejb3_langref_fetch_joins

глава: 10.2.3.5.3. JPQL Fetch Joins

...