Javers does not rollback transaction

256 views Asked by At

I have a Javers implementation in my Spring Boot application. Mongo 4.4 is used as a database. Starting with MongoDB 4.4, you can create documents in transactions.

I have simulated an exception when creating an object. As expected the object was not created in the database, but a new snapshot was added to the jv_snapshots collection.

Does Javers support transactions for MongoDB?

Repository:

@Repository
@JaversSpringDataAuditable
public interface ProjectRepository extends MongoRepository<Project, UUID> {
}

Service:

@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;
    }
}

Controller:

@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);
    }
}
1

There are 1 answers

0
Bartek Walacik On

Javers does not support transactions for MongoDB because there are no transactions in MongoDB.