[Spring] org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ~ - no Session

세상을 바꾸는 개발자·2023년 3월 28일
0

에러 코드

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.mysite.sbb.Question.answerList, could not initialize proxy - no Session



발생 원인

  • '질문에 달린 답변 찾기'에 대한 TEST를 수행하던 중 오류가 났다.
  • 질문 객체로부터 답변 리스트를 구하는 테스트코드이다.



문제 해결

  • 테스트 환경에서는 리포지터리를 이용한 통신만 가능한데,
    Question 리포지터리가 findById를 호출하여 Question 객체를 조회하고 나면 DB세션이 끊어지기 때문에 발생하였다.
    그 이후에 실행되는 q.getAnswerList() 메서드는 세션이 종료되어 오류가 발생한다.
    답변 데이터 리스트는 q 객체를 조회할때 가져오지 않고 q.getAnswerList() 메서드를 호출하는 시점에 가져오기 때문이다.
  • @Transactional 애너테이션을 사용하면 메서드가 종료될 때까지 DB 세션이 유지된다.
profile
초심 잃지 않기

0개의 댓글