Java .parallelStream() with spring annoted methods
2022-09-02 13:48:34
我尝试在DAO中使用带有Spring注释,并遇到了这样的问题: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 支持可以为此提供一些解决方案。有什么想法吗?