@Transactional 注释不起作用 springboot

时间:2021-03-31 13:57:02

标签: java mongodb spring-data-mongodb spring-transactions

我在 mongodb 中使用 springboot 2.3.0。 @Transactional 注释对我不起作用。如果出现任何异常,则无法回滚事务。 ps:使用 mongoTemplate 就可以了。

任何帮助将不胜感激。

我的控制器类:

@PostMapping(value = "/employee/{employeeId}")
public String createEmployee(@PathVariable(value = "employeeId") String employeeId, @RequestBody EmployeePayload payload) {
    
    employeeService.createEmployee(employeeId, payload);
    return "employee successfully added";
}

我的 serviceImpl 类

<块引用>
@Override
@Transactional(rollbackFor = {ArithmeticException.class})
public void createEmployee(String employeeId, EmployeePayload payload) {
    Employee employee = new Employee("1", "Robert", "24");
    Document mongoDocument = new Document();
    mongoTemplate.getConverter().write(employee, mongoDocument);
    MongoDatabaseFactory mongoDatabaseFactory = new 
    SimpleMongoClientDatabaseFactory(properties.getUri()
            + properties.getDataBase() 
            + properties.getDbFilter());

    MongoDatabaseUtils.getDatabase(properties.getDataBase(), 
    mongoDatabaseFactory).getCollection("employee").insertOne(mongoDocument);
    System.out.println(7 / 0); //To throw an exception
}

我的 MongoConfig 类

@Configuration public class MongoDBConfig {

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

1 个答案:

答案 0 :(得分:0)

您缺少 @EnableTransactionManagement 注释。