Проблема отображения спящего режима - PullRequest
0 голосов
/ 31 января 2011

У меня есть некоторые объекты, сопоставленные через hibernate.

A имеет один B

B имеет много C

Я создаю B, даю ему список Cs и устанавливаюB в A. Сохраните его, и все идет в нужное место в БД.

Когда я получаю B, я могу вызвать b.getCs (), и Cs там.Круто.

Моя проблема в том, что когда я получаю A, там есть B, но когда я вызываю abgetCs (), я получаю следующую ошибку:

org.hibernate.LazyInitializationException- не удалось инициализировать прокси - нет сеанса - 10890

Кто-нибудь знает, почему это не работает?

Ответы [ 3 ]

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

Отключите отложенную загрузку на вашем отображении, если вы используете xml для отображения, попробуйте это

<hibernate-mapping default-lazy="false">

Но при использовании этого необходимо учитывать проблему с производительностью, так как это приведет к замедлению работы программы при большом результате запроса.

при использовании аннотации:

@ManyToOne(fetch=FetchType.LAZY)
public List<A> getAllA(){
   //this is your method to get all A's list
}
0 голосов
/ 28 марта 2012

Вы не упомянули тип приложения. Если это веб-приложение, рассмотрите возможность использования Open Session in View (https://community.jboss.org/wiki/OpenSessionInView). Это также может помочь.

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

Измените ваше отображение, чтобы отключить отложенную загрузку C на Bs. Конечно, если вы попытаетесь получить большое количество B одновременно, вы потерпите неудачу в производительности.

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