spring 의 service 는 트 랜 잭 션 설정 을 시작 하지 않 습 니 다.
selectA 가 selectB 를 호출 하 는 것 을 발 견 했 습 니 다. selectB 가 Exception 을 던 지면 selectA 에서 Exception 을 잡 았 지만 계속 밖으로 던 지지 않 으 면 오류 가 발생 할 수 있 습 니 다.
Transaction rolled back because it has been marked as rollback-only
그 원 리 를 바로 잡 는 것 은 간단 하 다. selectB 가 돌아 올 때 transaction 은 rollback - only 로 설정 되 었 으 나 selectA 는 정상적으로 소화 되 어 계속 밖으로 던 지지 않 았 다.
그러면 selectA 가 끝 날 때 transaction 은 commit 작업 을 수행 하지만 transaction 은 rollback - only 로 설정 되 었 습 니 다.
그래서 이 오류 가 발생 할 수 있 습 니 다.
어떤 학우 들 은 그것 은 할 수 없 는 것 이 아니 라 서 비 스 는 이상 을 던 져 서 는 안 되 거나 이상 을 차단 할 수 없다 고 말 했다.
사실은 그렇지 않 습 니 다. 사실은 오류 가 여기에 없 는 것 이 아니 라 select 라 는 조작 이 왜 사 무 를 시작 해 야 합 니까?
문 제 를 잘 조정 하고 해결 방안 을 찾 으 면 문 제 는 propagation = 'REQUIRED' 라 는 속성 에 나타난다.
표준 문서 에 이렇게 쓰 여 있 습 니 다.
MANDATORY
Support a current transaction, throw an exception if none exists. NESTED
Execute within a nested transaction if a current transaction exists, behave like PROPAGATION_REQUIRED else. NEVER
Execute non-transactionally, throw an exception if a transaction exists. NOT_SUPPORTED
Execute non-transactionally, suspend the current transaction if one exists. REQUIRED
Support a current transaction, create a new one if none exists. REQUIRES_NEW
Create a new transaction, suspend the current transaction if one exists. SUPPORTS
Support a current transaction, execute non-transactionally if none exists. 보아하니 우 리 는 다음 과 같은 수정 이 필요 하 다.
이렇게 select 와 같은 검색 작업 은 사 무 를 시작 하지 않 고 업무 가 있 는 방법 에서 도 select 방법 을 정상적으로 호출 할 수 있 습 니 다.
이제 괜찮아.
그러나 지금 또 다른 문제 가 발생 했다. 만약 에 한 사물 에서 db 를 조작 한 다음 에 사물 이 나 오기 전에 아까 db 가 조작 한 데 이 터 를 select 하면 수정 결 과 를 얻 을 수 없다 는 것 이다. 왜 일 까?not - supported 는 select 를 실행 하기 전에 기 존 사물 을 걸 기 때문에 기 존 사물 에 없 으 면 수 정 된 데 이 터 를 얻 을 수 없습니다.
어 떡 하지?supports 로 변경:
이 상 태 는 한 마디 로 '있 으 면 사물 을 넣 고 없 으 면 사물 을 만 들 지 않 는 다' 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.