提问人:zellcorp 提问时间:10/26/2023 最后编辑:zellcorp 更新时间:10/26/2023 访问量:28
使用多个存储库时事务不工作
Transaction not working when using multiple repository
问:
我尝试在同一事务中保存 2 个文档。 但是,当在第一个 save() 之后抛出异常时,第一个文档仍会被保存。 好像根本没有交易。
我使用 MongoDB Atlas,版本 6.0.11
这里我的服务:
@Service
@RequiredArgsConstructor
public class ApiService {
private final FirstRepository firstRepository;
private final SecondRepository secondRepository;
@Transactional
public Mono<SecondDocument> save(FirstDocument firstDocument, SecondDocument secondDocument) {
firstRepository.save().subscribe();
if(true) {
throw new RuntimeException("test");
}
return secondRepository.save(secondDocument);
}
}
和我的 mongo 的配置类:
@Configuration
@EnableTransactionManagement
public class MongoReactiveConfig extends AbstractReactiveMongoConfiguration {
@Bean
ReactiveMongoTransactionManager transactionManager(ReactiveMongoDatabaseFactory factory) {
return new ReactiveMongoTransactionManager(factory);
}
@Override
public MongoClient reactiveMongoClient() {
return MongoClients.create("mongodb+srv://user:password@url/db&replicaSet=replicaSet");
}
@Override
protected String getDatabaseName() {
return "database";
}
}
和我的Spring Boot应用程序:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
谁能帮我理解为什么第一个文档仍然保存?
答: 暂无答案
上一个:事务提交后访问消息有效负载
评论
@Transactional