Я использую spring-boot-starter-data-mongodb:2.2.1.RELEASE
и пытаюсь добавить поддержку транзакций для операций с БД go.
У меня есть служба учетных записей ниже, где документы вставляются в две коллекции accounts
и profiles
, Если при вставке в коллекцию profile
происходит ошибка, вставка в accounts
должна выполнить откат. Я настроил транзакции Spring, используя MongoTransactionManager
.
@Service
public class AccountService {
@Transactional
public void register(UserAccount userAccount) {
userAccount = accountRepository.save(userAccount);
UserProfile userProfile = new UserProfile(userAccountDoc.getId());
userProfile = profileRepository.save(userProfile);
}
}
Включена поддержка транзакций Spring для MongoDB.
@Configuration
public abstract class MongoConfig extends AbstractMongoConfiguration {
@Bean
MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
return new MongoTransactionManager(dbFactory);
}
}
В соответствии со ссылкой на Spring выполните c https://docs.spring.io/spring-data/mongodb/docs/2.2.1.RELEASE/reference/html/#mongo .transactions , все, что требуется для включения транзакций для MongoDB. Но это не работает. Вставки в коллекцию accounts
не отменяются в случае возникновения ошибки при вставке в коллекцию profiles
. Любые предложения, если я что-то упустил?