首页 > 解决方案 > 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);
    }
}

标签: spring-bootjavers

解决方案


Javers 不支持 MongoDB 的事务,因为 MongoDB 中没有事务。


推荐阅读