Hibernate LazyInitializationException с коллекцией Lazy - PullRequest
1 голос
/ 16 января 2012


Я на самом деле испытываю проблему с Hibernate. Я должен сказать, что я немного новичок в этом, но код, который у меня есть, уже был там и был создан людьми, которые знают Hibernate. Проблема в том, что я пытаюсь перенести версию Hibernate с v3.2.5 на 3.6.9. Код на самом деле работает на 100%, но когда я изменил JAR и все устаревшие функции, тот же код больше не работает. Итак, вот моя проблема:
У меня есть объект Client, который имеет связь «многие ко многим» с Status (мы сохраняем историю статусов). По умолчанию эта коллекция LAZY. Но когда я провожу исследование клиента, мне нужна эта информация, поэтому я использовал Criteria API. Затем я установил для EAGER коллекцию статусов, например:

Criteria lStatuCriteria = lIntrvCriteria.createCriteria(SimIntrv.SIM_STATU_INTRVS, Criteria.LEFT_JOIN);

А затем я использую функцию Restrictions.in() для фильтрации состояний. Проблема заключается в том, что в 3.2.5, когда вызывается функция list() объекта Client, коллекция (для которой в файле конфигурации установлено значение lazy) загружается правильно. С другой стороны, в 3.6.9 коллекция не загружается. Я попытался установить режим извлечения с помощью setFetchMode, но это не сработало.

Любая подсказка?

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Я предлагаю использовать lStatuCriteria.setFetchMode ("mate", FetchMode.EAGER), чтобы использовать режим Fetch в качестве критерия.

0 голосов
/ 16 января 2012

Когда вы присоединяетесь к статусам и фильтруете их, hibernate ожидает, что не все статусы будут возвращены запросом, и не инициализирует коллекцию.Я полагаю, что в старой версии статусы извлекаются с другой передачей туда и обратно после того, как клиенты загружаются через геттер где-то, и его больше нет.

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