Неправильно здесь то, что ваша конфигурация управления сеансом настроена на закрытие сеанса при совершении транзакции. Проверьте, есть ли у вас что-то вроде:
thread
в вашей конфигурации.
Чтобы преодолеть эту проблему, вы можете изменить конфигурацию фабрики сеансов или открыть другой сеанс и только спросить для тех ленивых загруженных объектов. Но я бы предложил здесь инициализировать эту ленивую коллекцию в самой getModelByModelGroup и вызвать:
Hibernate.initialize(subProcessModel.getElement());
, когда вы все еще в активном сеансе.
И последнее. Дружелюбный совет. У вас есть что-то вроде этого в вашем методе:
for (Model m : modelList)
if (m.getModelType().getId() == 3) {
model = m;
break;
}
Пожалуйста, установите этот код, просто отфильтруйте эти модели с идентификатором типа, равным 3 в запросе, только пару строк выше.
Некоторое чтение: