@Component
@Scope("step")
public class MyReader implements ItemReader<MyDto>, InitializingBean{
private HibernateCursorItemReader<Object[]> reader;
@Autowired
private SessionFactory sessionFactory;
@Override
public void afterPropertiesSet() throws Exception{
reader = new HibernateCursorItemReader<>();
reader.setSessionFactory(sessionFactory);
reader.setUseStatelessSession(true);
reader.setQueryString(/*query*/);
//...
}
public MyDto read() throws Exception{
Object[] record = reader.read(); //exception here org.hibernate.AssertionFailure: possible non-threadsafe access to the session
}
}
При использовании HibernateCursorItemReader
я получил исключение org.hibernate.AssertionFailure: possible non-threadsafe access to the session
.
Как это исправить?
Мне нужно, чтобы запустить read()
, чтобы яможет записать результаты в новый MyDto
объект для писателя для обработки / записи.Автор имеет свои собственные вызовы БД, чтобы получить и другие детали.