我正在使用spring-boot-starter-data-mongodb:2.2.1.RELEASE,并试图添加对Mongo DB操作的事务支持。
我有下面的帐户服务,其中文档被插入到两个集合accounts和profiles中。如果在插入到profile集合时发生错误,则应该回滚插入到accounts中的操作。我已经使用MongoTransactionManager配置了Spring事务。
@Service
public class AccountService {
@Transactional
public void register(UserAccount userAccount) {
userAccount = accountRepository.save(userAccount);
UserProfile userProfile = new UserProfile(userAccountDoc.getId());
userProfile = profileRepository.save(userProfile);
}
}为MongoDB启用了Spring transaction支持。
@Configuration
public abstract class MongoConfig extends AbstractMongoConfiguration {
@Bean
MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
return new MongoTransactionManager(dbFactory);
}
}根据Spring参考文档https://docs.spring.io/spring-data/mongodb/docs/2.2.1.RELEASE/reference/html/#mongo.transactions,为MongoDB启用事务都是必需的。但这是行不通的。如果在插入到accounts集合时发生错误,则不会回滚对profiles集合的插入。如果我遗漏了什么,有什么建议吗?
发布于 2020-04-20 07:05:36
我将在服务器端使用命令监视或检查查询日志,以确保:
在执行查询/写入commands
https://stackoverflow.com/questions/61232381
复制相似问题