inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

32강. 반납 기능 개발하기

스스로 찾고싶었지만 이 이상 찾을 수가 없습니다..

321

준영

작성한 질문수 12

0

안녕하세요 이번강의에서 후반부까지는 잘 되었다가 마지막 과정에서 막혀서 질문 드립니다.

우선 오류가 났다고 생각하는곳은 Id와 BookName으로 대출기록을 불러오고 doReturn을 불러오는 과정에서

예외가 발생되었고 예외가 발생되었기때문에 아이디와 책 이름이 일하는기록이 없어서 예외가 나왔다고 생각했습니다.

하지만 터미널로 sql문을 이용해 찾아봐도

user_loan_history의 user_id와

user의 id가 같았습니다.

이 이상 Id대신 이름을 getName을 해봐도 오류가 나서 진행을 못하는 상황입니다.. 오류의 원인이 뭔지 알 수 있을까요sql.pngBookRepository.pngreturnBook.png

2024-03-22 17:03:37.674 ERROR 84411 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException] with root cause

java.lang.IllegalArgumentException: null
	at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na]
	at com.group.libraryapp.Service.book.BookService.returnBook(BookService.java:71) ~[classes/:na]
	at com.group.libraryapp.Service.book.BookService$$FastClassBySpringCGLIB$$1faa236c.invoke(<generated>) ~[classes/:na]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.24.jar:5.3.24]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.24.jar:5.3.24]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.24.jar:5.3.24]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.24.jar:5.3.24]
	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.24.jar:5.3.24]
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.24.jar:5.3.24]
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.24.jar:5.3.24]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar:5.3.24]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.24.jar:5.3.24]
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.24.jar:5.3.24]
	at com.group.libraryapp.Service.book.BookService$$EnhancerBySpringCGLIB$$892e8bee.returnBook(<generated>) ~[classes/:na]
	at com.group.libraryapp.controller.book.BookController.returnBook(BookController.java:32) ~[classes/:na]
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.24.jar:5.3.24]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:699) ~[tomcat-embed-core-9.0.69.jar:4.0.FR]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.24.jar:5.3.24]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.69.jar:4.0.FR]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.69.jar:9.0.69]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.69.jar:9.0.69]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.24.jar:5.3.24]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar:5.3.24]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.24.jar:5.3.24]

java spring aws mysql spring-boot jpa

답변 3

0

최태현

안녕하세요 준영님!

데이터베이스 상황과 API를 호출할 때 파라미터로 들어온 값들을 알면 보다 정확한 진단이 가능할 것 같은데요, 우선 보내주신 로그로 가장 먼저 의심해 볼 수 있는 상황은 Optional.orElseThrow() 로 인해 에러가 발생하는 상황입니다!

즉, 보내주신 에러를 기준으로 BookService.java:71 에서 데이터베이스에서 데이터를 가져오려 했으나 조건에 맞는 데이터가 없어 실패한거죠!

 

따라서

  1. 애플리케이션에서 어떤 SQL이 DB로 보내졌고,

  2. 해당 SQL을 만족하는 데이터가 DB에 있는지

확인해보시면 좋을 것 같습니다.

감사합니다! 🙏

0

준영

AI가 말 한 대로 불러오질못해서 일단 자동으로 올라가는값을 잡지 못하는건가 싶어서 자동으로올라가는값도 초기화 시켜봤지만 동일하게 안되었습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

준영님의 질문과 관련된 오류는 java.lang.IllegalArgumentException: null에 관한 것으로, 특히 returnBook 메서드 실행 중 발생한 것으로 보입니다. 이는 주로 Optional.orElseThrow() 메서드가 null 값을 반환할 때 발생하는 문제와 연관이 있습니다. 이는 특정 객체나 데이터를 찾으려 했으나 찾지 못했음을 의미합니다.

준영님의 코드나 오류 메시지를 기반으로, 정확한 문제의 원인을 알려드리기 어렵지만, 비슷한 상황에서 발생한 오류를 다룬 내용을 찾았습니다. 이는 “대출 기록이 없어 예외가 발생하는 경우”에 대한 것으로, returnBook 기능에서 대출 기록을 찾거나 처리하는 과정에서 예외가 발생할 수 있음을 언급합니다.

  • ”[31강]오류를 찾아 내지 못하겠습니다.” - 이 게시물에서는 유사한 java.lang.IllegalArgumentException: null 오류를 겪은 다른 수강생의 질문에 대해 강사님이 제공한 답변을 확인할 수 있습니다. 강사님은 Optional.orElseThrow()에서 발생하는 예외가 주로 DB에서 예상하는 데이터를 찾지 못했을 때 발생한다고 설명합니다. 디버깅 팁으로는, API 호출 시 넘긴 데이터나 대출 기록 조회 로직을 다시 검토해 볼 것을 권장합니다.

비록 이 답변이 준영님의 코드에서 발생한 구체적인 문제를 해결하지 못할 수도 있지만, 문제 해결을 위한 일반적인 방향을 제시할 수 있을 것입니다. 대출 기록을 조회하고, 처리하는 로직 내부에서 발생할 수 있는 예외 상황(예: DB에서 대출 기록을 정상적으로 찾지 못하는 경우)을 다시 한 번 점검해 보실 것을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

리액트 관련 질문이 있습니다.

0

62

2

스프링부트 버전

0

67

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

55

2

33강. UserLoanHistory의 관계성에 대한 질문

1

52

2

Java JDK 버전 문의의 건

0

131

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

83

3

h2 console 접속했을 테이블 질문

1

63

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

72

2

15강. updateUser() 질문

0

53

2

깃허브 질

0

80

2

여기까지 다 끝냈다고 하셨는데

0

76

2

왜안될까요

0

68

2

MySQL 창이안ㄴ뜹니다

0

56

2

포스트맨

0

47

1

spring 개념적인 질문

0

69

2

인텔리제이 샘플코드 실행 안됨 오류

0

138

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

81

1

마이그레이션 오류입니다.

0

167

3

Whitelabel Error Page 오류가 났습니다.

0

158

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

89

3

궁금한게 있습니다.

0

55

2

DTO 관련

0

68

2

궁금한게 있습니다!

0

63

2

35강에서 returnBook 에서 userLoanHistory 값 중복에 관하여

0

54

2