본문 바로가기
Spring/JPA

[JPA] could not initialize proxy - no Session 에러

by J4J 2021. 4. 6.
300x250
반응형

안녕하세요. J4J입니다.

 

JPA를 사용하다가 연관관계 매핑을 위해 @OneToMany 어노테이션을 추가한 뒤 findAll() 메서드를 테스트했는데 다음과 같은 에러가 저를 반겼습니다.

 

"failed to lazily initialize a collection of role: className, could not initialize proxy - no Session"

 

위의 에러가 나올 때 @Transactional을 추가해줬더니 에러가 해결되었습니다.

 

package com.spring.jpa;

import javax.transaction.Transactional;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;

import com.spring.jpa.config.RootContext;
import com.spring.jpa.repository.SchoolRepository;

import lombok.extern.slf4j.Slf4j;

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = RootContext.class)
@Slf4j
public class JPATest {
	
	@Autowired
	SchoolRepository schoolRepository;
	
	@Test
	@Transactional
	public void transactionTest() {
		log.info(schoolRepository.findAll().toString());
	}
}

 

 

@OneToMany의 FetchType의 디폴트 값이 LAZY인데 LAZY로 되어있는 값을 조회하기 위해서는 @Transactional값이 필수인가 봅니다.

 

 

728x90
반응형

댓글