Отключить Hibernate ленивый выбор много-к-одному ассоциаций - PullRequest
1 голос
/ 28 сентября 2011

Тема многих предыдущих вопросов, которые я вижу, но не совсем так, как эта. Я понимаю стратегии ленивого извлечения Hibernates, просмотр открытых сессий и т. Д., Но я не могу найти решение этой простой мелочи, когда моя ассоциация лениво выбирается несмотря ни на что.

Я не использую открытый сеанс в поле зрения, так как мое веб-приложение было создано без него, и теперь его сложно «перенести» ...

Скажем, у нас есть цепочка ссылок, скажем a <- b <- c <- d -> e
Чаще всего извлечение a также означает, что нам нужны b, c и d . Таким образом, они всегда будут загружены (указав lazy=false в файле отображения гибернации). Это работает !!

Однако теперь нам также нужно всегда охотно извлекать ассоциацию e , каждый раз, когда выбирается d. Поскольку e имеет решающее значение для выполнения некоторых логических операций над d .

И это то, где он перестает работать ... e ассоциируется с d как ассоциация "многие к одному" на d . Установка этого параметра в lazy=false не помогает, все равно не инициализируется должным образом, а доступ к свойствам в e из d вызывает исключение LazyInitialisationException.

Это неправильно с моей стороны ожидать, что это сработает? Свойство lazy указывается в файлах hbm с использованием hibernate v. 3.2.6 и Spring версии 2.5.6.

Надеюсь, кто-то может прояснить для меня вещи ...

В любом случае, пожалуйста, обратитесь к другому сообщению, если вы его найдете. Кажется, я не могу найти что-то, что покрывает это ...

1 Ответ

3 голосов
/ 28 сентября 2011

Ленивый атрибут многозначных ассоциаций установлен в элементе класса:

<class name="E" laze="false">
...
</class>

<class name="D">
  <many-to-one name="e" .../>
</class>

Атрибут lazy для many-to-one имеет то же значение, что и для любого свойства: он допускает отложенную загрузку отдельных свойств , которая работает только тогда, когда сам владелец является прокси. Это не то, что вы можете использовать в вашем случае, и в любом случае для него установлено значение false.

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