Java .parallelStream () с пружинными аннотированными методами
Я пытаюсь использоватьparallelStream()
в ДАО с весны@Transactional
аннотации и получаю такую проблему:
@Transactional
public void processCollection(Collection<Object> objects) {
objects.parallelStream()
.forEach(this::processOne); //throw exception
}
@Transactional
public void processOne(Object o) {
...
}
Работает правильно:
@Transactional
public void processCollection(Collection<Object> objects) {
objects.stream()
.forEach(this::processOne); //work correctly
}
@Transactional
public void processOne(Object o) {
...
}
Исключение:
org.hibernate.HibernateException: No Session found for current thread
org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106)
org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:978)
Как я могу использовать@Transactional
аннотированные методы поparallelStream()
?
Обновить Почему это случилосьSpring менеджер транзакций и многопоточность Но я надеюсь, что Spring 4 с поддержкой Java 8 может помочь в этом. Есть идеи?