jpa ленивая выборка объектов на нескольких уровнях с api критериев

Я использую JPA2 с его API критериев для выбора моих сущностей из базы данных. Реализация - OpenJPA на WebSphere Application Server. Все мои объекты смоделированы с помощью Fetchtype = Lazy.

Я выбираю объект с некоторыми критериями из базы данных и хочу сразу загрузить все вложенные данные из подтаблиц. Если у меня есть модель данных, в которой таблица A соединена oneToMany с таблицей B, я могу использовать предложение Fetch в моем запросе критериев:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<A> cq = cb.createQuery(A.class);
Root<A> root = cq.from(A.class);
Fetch<A,B> fetch = root.fetch(A_.elementsOfB, JoinType.LEFT);

Это отлично работает. Я получаю элемент A, и все его элементы в B заполнены правильно. Теперь таблица B имеет отношение oneToMany к таблице C, и я тоже хочу загрузить их. Поэтому я добавляю к своему запросу следующее утверждение:

Fetch<B,C> fetch2 = fetch.fetch(B_.elementsOfC, JoinType.LEFT);

Но это ничего не даст.

Кто-нибудь знает, как получить многоуровневые объекты одним запросом?

8
задан Mikko Maunu 15 January 2012 в 13:25
поделиться