마이페이지에서 유저가 작성한 게시글을 전부 조회하려고 하는데 proxy 관련 오류가 떴다.
<포스트맨 에러 메시지>
<인텔리제이 에러 메시지>
2022-08-31 10:38:06.808 ERROR 4872 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet]
: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
[Request processing failed; nested exception is org.hibernate.LazyInitializationException:
failed to lazily initialize a collection of role: com.clonecode.inssagram.domain.Post.imageList,
could not initialize proxy - no Session] with root cause
@OnetoMany 관계에서 fetchType.LAZY로 되어있을 경우, 프록시 객체를 통해 지연 로딩되는 객체를 가져오려고 할 때 이미 세션이 사라져서 발생하는 에러이다.
FetchType.EAGER를 명시해서 즉시 로딩으로 읽어오게 하면 해결될 수도 있다고 한다. 그런데 그리 좋은 방법은 아니라고 한다.
지연 조회 시점까지 세션을 유지 시켜주기 위해서 @Transactional 어노테이션을 마이페이지 조회 method 위에 추가했다.
두둥! 이제 잘 조회된다!