Мой вопрос: как транзакция будет вести себя в таком коде?
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void test(List<Long> ids) {
List<CompletableFuture> list = ids.stream().parallel()
.map(id -> build(id))
.collect(Collectors.toList());
// other logic
}
private CompletableFuture build(Long id) {
return CompletableFuture.supplyAsync(() -> Calculation.builder().id(id).build(), someExecutor)
.thenApply(calculationRepository::save);
}
Я думаю, что она сломается, потому что а) закрытый метод б) другие потоки
Есть ли способсохранить мою транзакцию?(пример кода синтетический, но концепция должна быть ясной)