spring-boot - Javers 不回滚事务
问题描述
我的 Spring Boot 应用程序中有一个 Javers 实现。Mongo 4.4 用作数据库。从 MongoDB 4.4 开始,您可以在事务中创建文档。
我在创建对象时模拟了一个异常。正如预期的那样,该对象并未在数据库中创建,但新快照已添加到 jv_snapshots 集合中。
Javers 是否支持 MongoDB 的事务?
存储库:
@Repository
@JaversSpringDataAuditable
public interface ProjectRepository extends MongoRepository<Project, UUID> {
}
服务:
@Service
@RequiredArgsConstructor
public class ProjectServiceImpl extends ProjectService {
private final ProjectRepository projectRepository;
@Transactional
@Override
public Project create(Project project) {
Project savedProject = projectRepository.save(project);
// Simulate exception
if (true) throw new RuntimeException("Simulate...");
return savedProject;
}
}
控制器:
@RequestMapping("/api/v1/projects")
@RestController
@AllArgsConstructor
public class ProjectController {
private final ProjectService projectService;
@PostMapping
public ResponseEntity<Project> create(@RequestBody Project entity) {
Project project = projectService.create(entity)
return ResponseEntity.status(HttpStatus.CREATED).body(project);
}
}
解决方案
Javers 不支持 MongoDB 的事务,因为 MongoDB 中没有事务。
推荐阅读
- python-3.x - 在python中同时使用范围和长度函数
- python - 将python字符串输出导出到记事本
- sql - sqlite - 根据字段值将 2 行中的相同字段组合成 2 列
- list - 对列表中值的数量进行分类
- azure - 条纹 - Blazor - 天蓝色
- python - 无意中在 matplotlib 中绘制多条线
- python - 保存/加载双端队列
- sql - 从 SAP/Sybase ASE 上的事务中运行 sp_rename 的解决方法(错误 17260)
- lucene - 如果在 Lucene 8.6.1 中未操作索引,docids 是否不变?
- security - Digital Ocean VPC Droplets 无法相互连接