Весенняя транзакция не откатывается после исключения - PullRequest
0 голосов
/ 10 апреля 2019

Я создаю нового пользователя, и после этого, когда я создаю профиль для пользователя с помощью createProfileRequest(), и служба выдает мне ошибку, пользователь не откатывается

@Transactional(rollbackFor = {RestClientException.class, IllegalStateException.class})
    public User createUser(UserRegistrationForm registrationForm) throws UserAlreadyExistsException {
        if (userRepository.existsUserByEmailOrUsername(registrationForm.getEmail(), registrationForm.getUsername()))
            throw new UserAlreadyExistsException("User with credentials "  +
                    registrationForm.getEmail() + "/" + registrationForm.getUsername() + " already exists");

        User user = new User(registrationForm.getUsername(), registrationForm.getEmail());
        user.setPassword(passwordEncoder.encode(registrationForm.getPassword()));
        user.setRoles(getDefaultRoles());

        userRepository.save(user);

        createProfileRequest(user);

        tokenService.createToken(user.getId(), TokenType.ACTIVATION);
        log.info("Created user with id: " + user.getId());
        return user;
    }

    private void createProfileRequest(User user) throws RestClientException, IllegalStateException {
        ObjectNode profile = new ObjectMapper().createObjectNode();
        profile.put("userId", user.getId());
        profile.put("visibleName", user.getUsername());
        restTemplate.postForLocation("http://profile/api", profile);
    }

1 Ответ

1 голос
/ 11 апреля 2019

Я думаю, что ваша проблема с видимостью метода createProfileRequest () здесь. Транзакционная аннотация работает по умолчанию только с открытыми методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...