1 回答
TA贡献1826条经验 获得超6个赞
我发现了如何在 ForkJoinPool 的任务中设置事务。我只需像下面那样使用 TransactionSynchronizationManager。
@Transactional(readOnly = true)
public void streamTest() {
ForkJoinPool customThreadPool = new ForkJoinPool(20);
try {
customThreadPool.submit(() -> {
TransactionSynchronizationManager.setActualTransactionActive(true);
TransactionSynchronizationManager.setCurrentTransactionReadOnly(true);
TransactionSynchronizationManager.initSynchronization();
priceRepository.streamAll()
.parallel()
.map(p -> this.transform(p))
.forEach(System.out::println);
}).get();
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
添加回答
举报