Java .parallelStream () com métodos anotados por mola
Eu tento usar oparallelStream()
no DAO com Spring@Transactional
anotações e fique com esse problema:
@Transactional
public void processCollection(Collection<Object> objects) {
objects.parallelStream()
.forEach(this::processOne); //throw exception
}
@Transactional
public void processOne(Object o) {
...
}
Funciona corretamente:
@Transactional
public void processCollection(Collection<Object> objects) {
objects.stream()
.forEach(this::processOne); //work correctly
}
@Transactional
public void processOne(Object o) {
...
}
Exceçã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)
Como posso usar@Transactional
métodos anotados porparallelStream()
?
Atualizar Por que isso aconteceGerenciador de transações Spring e multithreading Mas espero que a primavera 4, com suporte a java 8, possa fornecer alguma solução para isso. Alguma ideia?