Откат данных в нескольких коллекциях при загрузке Spring - PullRequest
1 голос
/ 31 марта 2020

Я новичок в Spring boot 2.X, но пытаюсь реализовать Rollback, когда происходит ошибка. Этот вопрос относится к транзакции Spring и откату на нескольких таблицах . Я пытался сделать это, но у меня не получилось. Я вручную добавил RuntimeException для проверки в двух сервисах. Но это не работает, что означает, что он создает User, но не company коллекцию. Я пытался изменить propagation=Propagation.REQUIRES_NEW, REQUIRED также

Репозитории

public interface UserRepository extends MongoRepository<User,String> {}

public interface CompanyRepository extends MongoRepository<Company,String> {}

Сервисы

public interface UserService{
    User save(User user);
}


public interface CompanyService {
    Company addCompany();   
    Company save(Company company);
}

Реализации сервиса

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    UserRepository userRepository;

    @Override
    public User save(User user) {
        return userRepository.save(user);
    }   
}

@Service
public class CompanyServiceImpl implements CompanyService{

    @Autowired
    CompanyRepository companyRepository;

    @Autowired
    UserService userService;

    @Transactional(propagation=Propagation.REQUIRES_NEW)
    @Override
    public Company addCompany() {

        User user=new User();
        user.setFirstname("Nisha");
        user.setLastname("Kara");
        User savedUser=userService.save(user);

        if(user.getFirstname().equals("Nisha"))
            throw new RuntimeException("Runtime Error");

        Company company=new Company();
        company.setName("ABC");
        company.setUser(user);
        Company savedCompany=save(company);

        return savedCompany;
    }

    @Override
    public Company save(Company company) {  
        return companyRepository.save(company);
    }
}

Заранее спасибо.

Обновление 1 : я использую пн go дБ версии 4.2.1

1 Ответ

0 голосов
/ 31 марта 2020

Это зависит от того, какую версию MongoDb вы используете. Mongodb не поддерживает Transactions. (До версии 4).

...