작성
·
206
0
안녕하세요.
회원계정에 해당하는 태그를 조회하는 서비스로직 getTags에서 궁금한점이 있습니다.
저는 자바8을 사용하고있어서(sysout은 나중에 찍었습니다.)
public Set<Tag> getTags(Account account) {
Optional<Account> byId = accountRepository.findById(account.getId());
System.out.println("byid : " + byId.orElseThrow(NullPointerException::new).getTags());
System.out.println(byId);
//없으면 에러를 던지고 있으면 태그를 가져온다
return byId.orElseThrow(NullPointerException::new).getTags();
}
//결과값
byid : null
Optional[com.jpa.studywebapp.domain.Account@3c]
위와같이 orElseThrow에 인자를 채워서 사용했습니다
그런데 자꾸 테스트에서 NPE가 발생했는데, 신기한점은 실제로 byid는 출력이 되는데 orElseThrow().getTags를 거치면 null이 출력이됩니다.
이 부분은 Detached상태도 아닌데 왜 자꾸 NPE가 출력이 되는지 궁금합니다.
답변 2
1
0