728x90
2021/12/15(수)
Spring boot + jpa + queryDsl + vue.js 을 사용한 프로젝트에서
Transactional roll-back오류가 발생했다
주로 Transactional오류는 어노테이션을 붙여주지 않아서 나오는 오류인데
이번에는 @Transactional을 안쓴것도 아닌데 오류가 나는 이유는..? 뭐지 하며 찾아보던 중에
axios를 두번 사용하여 중첩으로 인한? 오류라는 것을 발견했다
db 테이블에 저장을 성공하면 history테이블에도 저장시키는 방식으로 vue에서 코드를 짯는데
예를 들면 이런식의 코드를 짰었는데
사실 처음사용해보는 스택이여서 이게 효율적인 것인지는 모르겠지만..
이런식으로 구현하고 실행했더니 Transactional 오류가 나서 뭔가하고 봤더니
axios.patch (url, item)
.then(response = > {
axios.post(url, item)
.then(res => {})
.catch(err => {})
})
.catch(error => { })
겉에 있는 axios에 Transactional이 끝나지 않았는데 안에있는 axios를 실행하기 때문이라는 거같다..
그래서 다른 방법을 생각했다ㅎ
Boolean 변수하나를 생성해서 원본 테이블에 삽입이 성공하면 true로 변환하도록 하고
true면 history테이블에 저장하는 axios를 실행하도록 했다.
사실 이게 맞는건지는 모르겠지만 이렇게 하고 async와 await를 넣어주고 하니 잘실행이 되는것을 확인했다
async register() { // 등록
await axios.patch (url, item)
.then(response = > {
useHist = true;
})
.catch(error => { })
this.insertHist();
},
insertHist() { // history테이블 삽입
if(useHist == true){
axios.patch (url, item)
.then(response = > {})
.catch(error => { })
useHist = false;
}
}
좋은 방안이 있다면 댓글로 알려주세요! (처음 배우고 사용해보는거라 이런 방식을 사용)
728x90
'코딩 연습장 > 오류!' 카테고리의 다른 글
Intellij에서 Maven block 에러 (0) | 2022.01.26 |
---|---|
Spring + bitbucket 연동 문제 (1) | 2021.12.29 |
R - 패키지 설치 오류 (0) | 2021.04.11 |
오류일기-7- (0) | 2021.03.18 |
오류일기 -6- (0) | 2021.03.18 |