Если не указано иное, Hibernate 3.0+ будет лениво загружать коллекции ....
Кроме того, если не указано иное, hibernate будет управлять своими собственными сеансами во время выполнения, в вашем случае, запроса веб-приложения ... он закрывает и открывает новые сеансы по своему усмотрению. Таким образом, сеанс, который возвращает родителя, может не совпадать с сеансом, который запрашивается для получения дочерних элементов.
Вы можете применить шаблон OpenSessionInView к запросу, чтобы сохранить один (повторный) сеанс в течение всего запроса. Существует несколько способов применения шаблона: в качестве фильтра (OpenSessionInViewFilter в Spring), в качестве перехватчика (OpenSessionInViewInterceptor в Spring), по-видимому, в качестве прослушивателя веб-потока (HibernateFlowExecutionListener в Spring) или применения его непосредственно в точке кода, которая запускает весь беспорядок.
Другие подходы:
отключить ленивую загрузку (!),
активно загружать граф объектов: Hibernate.initialize (collection)