我在 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);
}
}
答案 0 :(得分:0)
您缺少 @EnableTransactionManagement 注释。