티스토리 뷰

반응형

안녕하세요, 오늘은 JPA에서 조회하는 과정에서 발생한 에러인 IllegalArgumentException: The given id must not be null 에 대해 알아보고, 이를 해결하는 방법에 대해 설명드리겠습니다.

 

 

에러 원인

Response response = responseRepository.findById(dto.getResponseId())
                        .orElseThrow(() -> new IllegalArgumentException(dto.getResponseId() + "해당 응답이 없습니다."));

 

  • dto에서  responseId를 받아서 조회하는 과정에서 해당 에러가 발생하였습니다.
  • 해당 에러는 주로 데이터베이스에서 특정 엔티티를 조회할 때, 조회 대상의 ID가 null이어서 발생합니다.
  • 위 코드에서 dto.getResponseId()가 null인 경우, responseRepository.findById(null)을 호출하게 되고, 이는 IllegalArgumentException을 발생시킵니다.

 

 

 

해결 방법

  • 이 문제를 해결하기 위해서는 dto.getResponseId()가 null인지 확인하고, null인 경우 적절한 예외를 발생시키거나 기본값을 설정하는 방법을 사용할 수 있습니다.


1. Null 체크 후 예외 처리

  • dto.getResponseId()가 null인지 확인하고, null인 경우 IllegalArgumentException을 발생시키도록 코드를 수정합니다.
if (dto.getResponseId() == null) {
    throw new IllegalArgumentException("응답 ID는 null이 될 수 없습니다.");
}

Response response = responseRepository.findById(dto.getResponseId())
                        .orElseThrow(() -> new IllegalArgumentException(dto.getResponseId() + "해당 응답이 없습니다."));

 


2. Optional 사용

  • Java 8 이상의 버전을 사용 중이라면 Optional을 이용해 더 깔끔하게 처리할 수 있습니다.
Optional.ofNullable(dto.getResponseId())
        .orElseThrow(() -> new IllegalArgumentException("응답 ID는 null이 될 수 없습니다."));

Response response = responseRepository.findById(dto.getResponseId())
                        .orElseThrow(() -> new IllegalArgumentException(dto.getResponseId() + "해당 응답이 없습니다."));

 

 

결론
IllegalArgumentException: The given id must not be null 에러는 조회 대상의 ID가 null일 때 발생하는 예외입니다. 이를 해결하기 위해서는 조회 전에 null 체크를 수행하거나, Optional을 사용하여 null 값을 처리해주는 방법을 사용할 수 있습니다. 이를 통해 코드의 안정성을 높이고, 예외 상황을 보다 명확하게 처리할 수 있습니다.
이상으로 IllegalArgumentException: The given id must not be null 에러의 원인과 해결 방법에 대해 알아보았습니다. 

감사합니다.

반응형
댓글
반응형
공지사항