Hibernateでいくつかのエンティティを読んでいます:
Criteria criteria = session.createCriteria(…);
List<Entity> list = (List<Entity>) criteria.list();
今、私はこのリストを繰り返し処理しており、 a 内のすべてのオブジェクトを に送信したいと考えてい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()
が正しく追加されていることがわかります。私は何を間違っていますか?