ServiceA에 @Transactional 설정. ServiceB에 @Transactional 설정.

Controller -> ServiceA -> ServiceB 호출.

ServiceB에서 exception throw, ServiceA에서 try-catch로 예외를 잡아서 처리.

Controller에서 "transaction rolled back because it has been marked as rollback-only" 예외 발생.

구글링 결과 propagation required가 문제(스프링은 기본값으로 required).

결과적으로 ServiceB의 @Transactional을 삭제. 정상적으로 동작하는 것 확인!


[참고] Exception on batch processing UnexpectedRollbackException - Transaction rolled back

Posted by bboks.net

댓글을 달아 주세요