Я нашел странное состояние моей программы спящего режима. Вот мой кодHibernate - не удалось лениво инициализировать - сеанс или сеанс не закрыты
public Set<AnotherClass> getAnotherClassSetsFromSomeClass() {
Session session = HIbernateUtil.getSessionFactory().openSession();
Transaction trans = session.beginTransaction();
SomeClass sc = (SomeClass)session.get(SomeClass.class,"classId");
trans.commit();
session.close;
return sc.getAnotherClassSet();
}
Этот код выглядит отлично, если я запускаю его на консоли Java.
Если я использовал его один веб-приложение (JSF), я получил эту ошибку
не удалось инициализировать лениво - не сеанс или сеанс был закрыт
Он имеет один ко многим соотношение (One SomeClass имеет много других классов)
Сообщение об исключении, указывающее на возврат sc.getAnotherClassSet()
в качестве нулевого указателя. Я уверен, что у меня есть данные в моей базе данных.
Ну, я нашел, что если я добавлю System.out.println(sc.getAnotherClassSet())
berfore return sc.getAnotherClassSet()
, мой код работает нормально.
Любая идея, что произошло? Благодарю.
Это ответ, но вместо этого вызывается getter или setter, лучше использовать атрибут класса с некоторой функцией, например getAnotherClassSet(). Size(), и он будет загружен в AnotherClassSet в SomeClass. Спасибо –
Да, загрузка ассоциации 'AnotherClassSet' (из' SomeClass') - это то, что я пытался предложить в последнем абзаце моего ответа ;-) – Crferreira