org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionSta

1459 단어 문제의 축적
org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope    

1. 업무 상황
데이터베이스 작업에 트랜잭션 메모 @Transactional (rollback For = Exception.class)를 추가했지만 코드에try catch가 있어서 자기가 포획한 것과 밖으로 던지지 않은 것과 같고 이상이 없어서 트랜잭션이 작동하지 않는 것과 같습니다.
2. 해결 방법
catch에 수동 스크롤 추가
try {} catch(Exception e) {logger.error(e.getMessage(), e),//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()를 수동으로 롤백합니다.        }
3. 문제 발생: 실행 중 버퍼링 이상
org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope

원인 분석: 수동으로 스크롤하기 전에 이 방법이 사무관리 @Transactional (rollbackFor = Exception.class) 에 의해 성명되어야 합니다. 이 방법은 수동으로 스크롤해야 효력이 발생합니다. 사무 주석은 사무transactionManager를 켜는 것과 같습니다.commit(status);그래서
@Transactional(rollbackFor = Exception.class)+TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
수동으로 롤백해야 적용 가능
4.
웹 프로젝트에서 @Transactional 주석 방법이나 클래스를 사용하여 사무 처리를 하는 경우가 많습니다. 자동 사무 제출에 문제가 있을 수 있습니다. 이럴 때는 수동으로 사무 제출을 해야 합니다.try catch 이상 던지기 안에서 수동으로 사무 처리를 굴러갑니다.Transaction Aspect Support.currentTransactionStatus().setRollbackOnly();
Object savePoint = TransactionAspectSupport를 사용합니다.currentTransactionStatus().createSavepoint(); 롤백 지점을 설정합니다.
TransactionAspectSupport를 사용합니다.currentTransactionStatus().rollbackToSavepoint(savePoint);savePoint로 롤백합니다.

좋은 웹페이지 즐겨찾기