티스토리 뷰
Backend/Springboot
IllegalArgumentException: The given id must not be null 에러 해결하기
단미라이프 2024. 5. 20. 10:40반응형
안녕하세요, 오늘은 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 에러의 원인과 해결 방법에 대해 알아보았습니다.
감사합니다.
반응형
'Backend > Springboot' 카테고리의 다른 글
[MSA] MSA 전환 - Spring Cloud란? (1) | 2024.10.09 |
---|---|
[MSA] MSA 전환 - 모놀리식 vs MSA (1) | 2024.09.11 |
Java 버전 오류 java.lang.UnsupportedClassVersionError 해결 방법 (0) | 2024.06.28 |
[Spring Boot] FCM(Firebase Cloud Messaging) 설정부터 푸시 알림 메시지 전송하기 (0) | 2024.05.22 |
댓글
반응형
공지사항