Откат не работает с помощью MongoTransactionManager - PullRequest
1 голос
/ 24 июня 2019

Здравствуйте. Я разрабатываю серверную часть, используя Spring boot и MongoDB 4.0. Чтобы добавить транзакции, я реализовал MongoTransactionManager, как видно из документации транзакции пружинного монго

@Bean
MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
        return new MongoTransactionManager(dbFactory);
} 

Но когда я аннотирую метод с помощью @Transactional (rollbackFor = NullPointerException.class), он не откатывается для этого исключения. Например, следующий тест не работает. У вас есть какие-либо советы, чтобы решить эту проблему, пожалуйста?

@Test
@Transactional(rollbackFor = NullPointerException.class)
public void testTransaction() {
    try {
        myRepo.deleteAll();
        throw new NullPointerException();
       } catch (
        NullPointerException e) {
    } finally {
        assertThat(myRepo.findAll()).isNotEmpty();
    }
}

1 Ответ

0 голосов
/ 15 июля 2019

Просто поймите, что MongoTransactionManager не работает, если вы также зарегистрировали Bean MongoTemplate. Более того, удивительно, что метод @Transactional не работает, если это метод @Test. Вы должны извлечь метод @Transactional в @ Service.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...