Я читаю некоторые объекты с Hibernate:LazyInitializationException при доступе к коллекции в Runnable
Criteria criteria = session.createCriteria(…);
List<Entity> list = (List<Entity>) criteria.list();
Теперь я итерация этого списка и хочу отправить каждый объект внутри Runnable
к Executor
. Поэтому я использую RunnableBean
.
for (Entity entity : list) {
IRunnableBean runnableBean = (IRunnableBean)
applicationContext.getBean("myRunnableBean", IRunnableBean.class);
runnableBean.setEntity(entity);
executor.execute(runnableBean);
}
RunnableBean
выглядит следующим образом:
RunnableBean implements IRunnableBean {
// Setter
@Transactional
void run() {
entity.getMyCollection();
}
}
Когда я получить доступ к коллекции, я получаю org.hibernate.LazyInitializationException
(no session or session was closed
).
В журнале Spring я вижу, что транзакционный метод run()
правильно добавлен. Что я делаю не так?