Hibernate получить объект со связанными объектами - PullRequest
1 голос
/ 25 января 2011

У меня проблема с отображением и запросами в спящем режиме.У меня есть объект A, который имеет отношение к B и C.

Режим выборки ленивый (@ManyToOne(fetch = FetchType.LAZY)), и я не могу его изменить.Итак, моя проблема заключается в следующем:

Когда я получаю объект методом get (hibernateDao.get), я получаю объект A без отношения с B и C.

Если я создаю критерии, Я заставляю отношение с criteria.setFetchMode(...) получить все только с помощью запроса.Но я читал в Интернете, что нехорошо делать критерии для получения объекта по первичному ключу.

Как это сделать с помощью метода get?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Вы можете использовать профили извлечения, чтобы установить режим извлечения как Lazy по умолчанию и как Eager для конкретного запроса: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e3524

И если вы используете версию Hibernate, которая не поддерживает Fetch Profiles, вы всегда можете выполнить HQL-запрос, который извлекает нужное вам дерево, используя соединения.

Но я читал в Интернете, что нехорошо делать критерии для получения объекта по первичному ключу.

Я был бы очень осторожен, прежде чем исключать решение только потому, что вы где-то читали, что это "плохо". В конце концов, это может быть плохо, но если вы не понимаете, почему это плохо, вы можете исключить решение, которое было принято для вашего конкретного случая; -)

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

Вызов Hibernate.initialize();

Пример:

myEntity = hibernateDao.get...;
Hibernate.initialize(myEntity);

Это заставит Hibernate загрузить все сопоставленные объекты в myEntity.

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