내가 필요해서 내가 적는 블로그

JAVA 백엔드 개발자의 기록들

JAVA

java.util.NoSuchElementException: No value present

돌프 2022. 1. 18. 17:04
반응형

java.util.NoSuchElementException: No value present

at java.util.Optional.get(Optional.java:135)

at ~~~.service.AbstractEntityService.findById_aroundBody30(AbstractEntityService.java:95)

 

No value... 벌써부터 값이 없다는 느낌이 든다. 

다음줄에 Optional.get 을 확인할 수 있고, 그 아래엔 findById를 볼 수 있다. 

 

 

예시

Group group = findById(member.getGroupId());

* member가 가지고 있는 GroupId로 group을 조회할 시 위와 같은 에러가 발생하였다. 

 

 

해결

	@Transactional(readOnly = true)
	public T findById(ID id) {
		return getBaseRepository().findById(id).orElse(null);
	}

 

 

기존 : findById(id).get();

수정 : findById(id).orElse(null);

 

* get() 사용시 Optional 객체에서(null인상태) 데이터를 꺼내지 못해서 No value 에러가 발생하였다. 

.orElse(T other) 사용시 Optional 객체에 저장된 값이 있으면 return하고,

저장된 값이 없을시 파라미터로 전달된(T other) 값을 반환한다. 필자는 null로 셋팅함.

 

Group group = findById(member.getGroupId());

// → findById 수정(.orElse(null))

	if(group == null) {
		continue;
	}

 

 

 

다음엔 Optional class에 대해 상세히 포스팅 하겠다. 

 

 

끝.

 

 

 

 

 

 

 

 

 

 

 

본문 내용이 도움이 되셨다면, 아래의 공감버튼을 눌러주세요. 

정보 공유를 위한 포스팅에 큰 힘이 됩니다. 

만약 틀린 정보가 있으면 댓글 달아주세요. 수정하도록 하겠습니다. 

읽어주셔서 감사합니다. 오늘도 좋은 하루 보내세요. 

반응형