[Trouble Shooting] 일정 관리 앱 Develop

2024. 11. 15. 14:21·❄️ 내일배움캠프 7기
728x90
반응형

깃허브

https://github.com/gxnie/Schedules_Develop

 

GitHub - gxnie/Schedules_Develop

Contribute to gxnie/Schedules_Develop development by creating an account on GitHub.

github.com

 


 

문제 개요 : Repository 예외처리 진행 중 오류(findByIdOrElseThrow)

  • 문제 : findByIdOrElseThrow 메서드가 ScheduleRepository에 없어서 발생한 오류
  • 증상: findByIdOrElseThrow 메서드 호출 시 MethodNotFoundException 오류 발생

문제 발생

  • findByIdOrElseThrow 메서드가 ScheduleRepository에 정의되지 않아, 해당 메서드를 호출하는 코드에서 오류 발생(단어가 빨간색으로 변경)
  • 오류를 해결한 후, User Repository에 삭제 기능을 구현할 때 findByIdOrElseThrow 메서드가 없어서 동일한 오류가 또 발생

해결 방법

첫 번째 문제 (ScheduleRepository에서 오류 발생):

  • 원인: ScheduleRepository에 findByIdOrElseThrow 메서드가 정의되지 않음(원래 있던 메소드가 아님, 커스텀해야함)
    메서드가 정의되지 않아서 ScheduleRepository에서 삭제 기능을 구현할 때, 오류가 발생
  • 해결 방법: ScheduleRepository에 findByIdOrElseThrow 메서드를 추가하여 문제를 해결
package com.example.schedules_develop.Repository;

import com.example.schedules_develop.entity.Schedule;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ResponseStatusException;

public interface ScheduleRepository extends JpaRepository<Schedule, Long> {
    default Schedule findByIdOrElseThrow(Long id){
        return findById(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Does not exist id = " + id));
    }
}

두 번째 문제 (UserRepository에서 오류 발생):

  • 원인: UserRepository에서 삭제 기능을 구현할 때, findByIdOrElseThrow 메서드가 정의되지 않아서 오류가 발생
  • 해결 방법: UserRepository에도 동일한 findByIdOrElseThrow 메서드를 추가(ScheduleRepository에서 작성한 findByIdOrElseThrow 메서드를 UserRepository로 복사하여 붙여넣기)하여 오류 해결
package com.example.schedules_develop.Repository;

import com.example.schedules_develop.entity.Schedule;
import com.example.schedules_develop.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ResponseStatusException;

import java.util.Optional;

public interface UserRepository extends JpaRepository<User, Long> {

    Optional<User> findUserByUserName(String username);

    default User findUserByUserNameOrElseThrow(String username){
        return findUserByUserName(username).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Does not exist username = " + username));
    }

    default User findByIdOrElseThrow(Long id){
        return findById(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Does not exist id = " + id));
    }
}

4. 검증 및 확인

  • ScheduleRepository에서 findByIdOrElseThrow 메서드를 추가한 후, Schedule Repository에서 발생한 오류가 해결되었는지 확인
  • UserRepository에 동일한 메서드를 추가한 후, 삭제 기능을 Postman에서 실행해 확인하기

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'❄️ 내일배움캠프 7기' 카테고리의 다른 글

[Trouble Shooting] 플러스주차 개인과제  (0) 2024.12.18
[Trouble Shooting] 은행 환전 개인과제  (0) 2024.11.29
[Trouble Shooting] 일정 관리 앱 만들기  (1) 2024.11.08
[내배캠/Spring] 1주차(용어 모음집)  (0) 2024.10.31
[JAVA] 숫자 야구 게임 개인과제 회고  (0) 2024.10.28
'❄️ 내일배움캠프 7기' 카테고리의 다른 글
  • [Trouble Shooting] 플러스주차 개인과제
  • [Trouble Shooting] 은행 환전 개인과제
  • [Trouble Shooting] 일정 관리 앱 만들기
  • [내배캠/Spring] 1주차(용어 모음집)
Genie_.
Genie_.
내가 공부하는 지식을 복습하고 기록하는 공간입니다 💬
  • Genie_.
    Geine Dev
    Genie_.
  • 전체
    오늘
    어제
    • 전체 (153)
      • 🕹️ 코딩테스트 (37)
        • 코드트리 (13)
        • 백준 (17)
        • 프로그래머스 (7)
      • 🧡 JavaScript (9)
      • 💙 React (0)
      • 💜 HTML,CSS (38)
      • 💚 Spring (6)
      • ❤️ JAVA (13)
        • Basic (13)
      • 🌟 CS (1)
      • ❄️ 내일배움캠프 7기 (41)
      • 🏅 자격증 (6)
        • 정보처리기사 (0)
        • SQLD (3)
        • 컴퓨터활용능력2급 (3)
      • 🗨 GIT (1)
      • 🌰 스터디 (1)
  • 블로그 메뉴

    • 홈
    • 글쓰기
  • 공지사항

    • 메모
  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Genie_.
[Trouble Shooting] 일정 관리 앱 Develop
상단으로

티스토리툴바