inblog logo
|
keepgoing
    Project

    [Project] 2차 프로젝트 - Error: 관리자-도서 수정 요청 에러 (해결)

    김호정's avatar
    김호정
    Oct 25, 2024
    [Project] 2차 프로젝트 - Error: 관리자-도서 수정 요청 에러 (해결)
     

    도서 등록 후 해당 등록된 도서 수정 후 요청을 할때 Error Return

    notion image
     
     

    문제 원인

    💡
    • isbn13으로 도서 조회 시 도서가 정상적으로 조회되지 않거나 입력 값 잘못 전달 가능성
     

    1. isbn13 확인

    💡
    • AdminController에서 @PathVariable로 전달되는 isbn13 값이 Book_tb의 isbn13값과 일치해야 조회 가능
    • 즉 해당값이 db의 isbn13 값과 일치하지 않아서 해당 Error Msg가 반환 됐을 수 있음
    • Controller의 해당 매핑부분에 로그 추가
    @PutMapping("/api/admins/{isbn13}/update") public ResponseEntity<?> updateBook(@PathVariable String isbn13, @RequestBody BookRequest.UpdateDTO updateDTO) { System.out.println("Received ISBN13: " + isbn13); // isbn13 값 확인 BookResponse.BookDetailDTO updateBook = bookService.도서업데이트(isbn13, updateDTO); return ResponseEntity.ok(Resp.ok(updateBook)); }
    notion image
    → 정상적으로 출력됨
     

    2. BookRepository에서 isbn13 조회 문제

    💡
    1. 현재 BookRespository에서 findById 메소드 사용중
    1. 이 메소드는 기본적으로 Long 타입의 ID로 조회되는 것이 기본적이므로 String 타입의 isbn13을 사용할 때 문제가 될 수 있음
    • BookService 수정 (findById → findByIsbn13)
    // 도서 수정 public BookResponse.BookDetailDTO 도서업데이트(String isbn13, BookRequest.UpdateDTO dto) { Book book = bookRepository.findByIsbn13(isbn13) .orElseThrow(() -> new ExceptionApi400("도서를 찾을 수 없습니다.")); // findByIsbn13 사용 // 카테고리 조회 Category category = categoryRepository.findById(dto.getCategoryId()) .orElseThrow(() -> new ExceptionApi400("카테고리를 찾을 수 없습니다.")); // 도서 정보 업데이트 book.update(dto, category); bookRepository.save(book); return new BookResponse.BookDetailDTO(book); }
     
    1. BookRepository 확인
    // 카테고리 조회 Category category = categoryRepository.findById(dto.getCategoryId()) .orElseThrow(() -> new ExceptionApi400("카테고리를 찾을 수 없습니다."));
    → 이렇게 해도 여전히 update 요청 시 도서를 못 찾음. 그래서 혹시 등록이 잘 된 건가 싶어서 해당 isbn13으로 조회를 해보니..
    notion image
    아예 등록조차 안된것.
     

    해결

    💡
    • BookService에서 해당 등록과 수정 로직 상단에 @Transactional 등록하니 해결…
    • Transaction 부분을 다시 제대로 짚어야 겠다.
    Share article

    keepgoing

    RSS·Powered by Inblog