Мне интересно, почему я получаю это исключение, пытаясь получить список объектов, привязанных к объекту, но вместо этого я получаю ленивое исключение, когда список равен null:не удалось лениво инициализировать коллекцию, когда нет значения в DB
Например:
protected static final String hqlRequest = "select user from User as user";
final StringBuilder sbHqlRequest = new StringBuilder(hqlRequest);
sbHqlRequest.append(" left outer join fetch user.listeCondition as condition");
sbHqlRequest.append(" left outer join fetch user.listeReponse as reponse");
sbHqlRequest.append(" left outer join fetch reponse.listeCat reponseCat");
sbHqlRequest.append(" left outer join fetch reponseCat.listeDomain listeDomain");
sbHqlRequest.append(" left outer join fetch reponse.listePlan reponsePlan");
sbHqlRequest.append(" where user.identifiant=? ");
return (User) session.createQuery(sbHqlRequest.toString()).setInteger(0, identifiant.intValue()).uniqueResult();
Я получаю ленивый при попытке получить доступ к reponseCat.listeDomain
. В моей БД нет списка, но я ждал нулевого, а не исключения.
Я делаю что-то неправильно или это то, как работает Hibernate?
Спасибо.
EDIT: Исключение:
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Cat.listeDomain - no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:191)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:183)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:48)
at org.hibernate.collection.PersistentSet.isEmpty(PersistentSet.java:118)
at org.apache.commons.collections.CollectionUtils.isEmpty(CollectionUtils.java:979)
at org.apache.commons.collections.CollectionUtils.isNotEmpty(CollectionUtils.java:992)
Я noticied, что: когда я использую сеанс прошел в парах, я получаю ленивое исключение, но когда я создаю локальный сеанс он работает, но я получаю мои объекты связанных с двумя разными сессиями !!!
Может кто-то плз помочь, я хочу закончить это пройти счастливого Рождества :(
также отправляет трассировку стека исключений –
Возможный дубликат [Спящий режим Нет сеанса или сеанса закрыты «когда я пытаюсь получить данные из базы данных») (http://stackoverflow.com/questions/13264799/hibernate-no- session-or-session-was-closed-when-i-try-to-get-data-from-data) –
Спасибо Vivek Singh, но я не хочу использовать lazy = false, я бы предпочел бы его получить, когда Мне это нужно. – Kirikou