TGViewer
Библиотека джависта | Java, Spring, Maven, Hibernate Библиотека джависта | Java, Spring, Maven, Hibernate @javaproglib · 22K subscribers
Post #7768 2.39K
ℹ️ @Transactional НЕ откатывается на checked-исключениях

Метод бросил исключение, ты ждёшь rollback, а в БД лежат наполовину применённые изменения. Скорее всего, исключение было checked:
@Transactional
public void process() throws BusinessException {
repo.save(a);
if (bad) throw new BusinessException("..."); // checked
repo.save(b);
}


По умолчанию Spring откатывает транзакцию только на RuntimeException и Error. На любом checked-исключении (наследники Exception, кроме RuntimeException) транзакция коммитится. Это не баг, а наследие декларативных транзакций из EJB.

Два пути:
// 1) явно расширить условие отката
@Transactional(rollbackFor = Exception.class)

// 2) или сделать доменные исключения unchecked
public class BusinessException extends RuntimeException { ... }


Проверь свои сервисные методы, которые бросают checked-исключения внутри @Transactional — там часто прячется молчаливый частичный коммит.

══════ Навигация ══════
Вакансии • Задачи • Собесы

🐸 Библиотека джависта

#Enterprise
  • 👍 6
  • 👏 1
More from @javaproglib
  1. Oct 10, 2026Post #7892
  2. Oct 10, 2026Read. Write. Edit. Bash. Это базовый набор операций Pi — агента, на котором построен OpenC…
  3. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  4. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  5. Sep 30, 2026🫡 Шпаргалка по аннотациям Spring Boot @Autowired, @RestController, @Transactional, @Cache…
  6. Sep 29, 2026🤩 В Java для стека лучше использовать Deque Если нужен обычный LIFO — «последним пришёл,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →