powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Откат транзакции в Spring
12 сообщений из 12, страница 1 из 1
Откат транзакции в Spring
    #39657091
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. База postgresql 10. Есть метод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private void check(Account account){
        if(account.isExpired()){
            account.setStatus(EXPIRED);
            accountRepository.save(account);
            throw new CustomException("Account expired");
        }
 }
По умолчанию спринг делает роллбек для анчеккед эксепшн, мой CustomException extends RuntimeException, поидее этот метод не должен был сохранить в базе статус EXPIRED, но он сохранил и при этом выбросил эксепшн Account expired. Подскажите, почему так? Спасибо
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657101
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где транзакция начинается?
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657107
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркА где транзакция начинается?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@Service
public class MyService {
    ....


    public void updateAccount(long id){
        ....
        Account account = accountRepository.findOne(id);
        check(account);
        ...
    }


private void check(Account account){
        if(account.isExpired()){
            account.setStatus(EXPIRED);
            accountRepository.save(account);
            throw new CustomException("Account expired");
        }
 }
}
Все происходит в одном и том же бине
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657136
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гайз, есть идеи какие-то? :)
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657179
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
updateAccount ловит это исключение или выбрасывает выше? Может дело в том что вызов this.check() не проксирован? Соотвесвтенно спринг ничего не знает про то что исключение выброшено.
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657243
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTГайз, есть идеи какие-то? :)
Локшин Марк А где транзакция начинается?
Может после @Service добавить @Transactional?
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657267
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczupdateAccount ловит это исключение или выбрасывает выше? Может дело в том что вызов this.check() не проксирован? Соотвесвтенно спринг ничего не знает про то что исключение выброшено.

+++
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657447
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczupdateAccount ловит это исключение или выбрасывает выше? Может дело в том что вызов this.check() не проксирован? Соотвесвтенно спринг ничего не знает про то что исключение выброшено.
updateAccount() вызывается в контроллере, в случае ошибки, срабатывает ControllerAdvice:
Код: plaintext
1.
2.
3.
@ExceptionHandler(value = AccountException.class)
    public ResponseEntity<String> accountException(AccountException ex, HandlerMethod handlerMethod) {
        return new ResponseEntity<>(ex.getMessage(), INTERNAL_SERVER_ERROR);
    }
и все, никаких трай кечей нет нигде
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657473
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как проверить проксируется ли сервисный класс? как это решить?
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657479
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где конфиг хоть какой-нибудь? Раз @Transactional нет, то должен же быть какой-нибудь конфиг? Просто по умолчанию транзакшионал методы вроде с get начинаются. Короче - конфиг в студию.
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657483
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTкак проверить проксируется ли сервисный класс? как это решить?

просто перенесите код
if(account.isExpired()){
account.setStatus(EXPIRED);
accountRepository.save(account);
throw new CustomException("Account expired");
}
в updateAccount и прогоните тест для начала. А транзакция вообще стартует?
...
Рейтинг: 0 / 0
Откат транзакции в Spring
    #39657925
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобралась, спасибо
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Откат транзакции в Spring
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]