반응형
Executing an update/delete query Error
Springboot, JPA 를 사용한 프로젝트 개발 중 발생한 에러입니다.
FAQ 카테고리를 삭제하면 해당 카테고리에 속하는 FAQ들을 모두 삭제시키는 경우에서 발생했습니다.
(삭제라고는 하지만 실제로는 useAt 필드 값을 통해 삭제 여부를 변경 즉, update 하는 로직입니다.)
정상적으로 FAQ Category 삭제 요청이 들어왔을 때 해당 FAQ Category의 useAt 값을 바꾸고, categoryIdx를 통해 해당 카테고리에 속하는 모든 faq의 상태값을 삭제 된 것으로 바꾸는 과정에서 아래와 같이 JPA를 사용한 void method로 update를 실행했습니다.
@Override
public void deleteAllFaqInQCategory(Long qCategoryIdx) {
QFaq faq = QFaq.faq;
Long updateFaq = queryFactory.update(faq).where(faq.useAt.eq("1").and(faq.QCategoryIdx.eq(qCategoryIdx)))
.set(faq.useAt, "0")
.excure();
}
그리고 프로젝트를 구동하여 카테고리를 삭제하니 에러 가 발생했습니다.
javax.persistence.TransactionRequiredException:Executing an update/delete query
해당 에러는 Update, Delete의 경우 Transaction 처리가 필요한데 해당 처리가 없었기 때문입니다.
@Transcation
@DeleteMapping("/delete")
public ResponseEntity<Map<String, Object>> deleteFaq(Long faqIdx) {
}
해결방안은 컨트롤러에 @Transaction 어노테이션을 추가하였고, 다시 동작했을 때 오류없이 update가 진행되었습니다.
(javax.transaction.Transactional)
반응형
'Programming > Javascript' 카테고리의 다른 글
JavaScript 클립보드 복사하는 방법(Clipboard API, clipboard.js) (0) | 2022.06.17 |
---|---|
Javascript Cookie 쿠키 저장, 가져오기, 삭제 함수 (0) | 2022.06.03 |
구글맵 google map API 사용법 및 marker 추가, 변경하는 법 (JavaScript) (0) | 2022.02.26 |
비동기 통신 Ajax 개념 (Asynchronous Javascript And Xml) (0) | 2021.08.26 |
input type=datetime-local 최솟값 min, 현재값 value 적용하는 방법 (0) | 2021.08.08 |