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
반응형
'Spring > JPA' 카테고리의 다른 글
[JPA] 자동으로 Datetime 설정하기 (0) | 2022.04.07 |
---|---|
[JPA] MapStruct, Entity ↔ DTO 변환 (1) | 2021.04.03 |
[JPA] ModelMapper, Entity ↔ DTO 변환 (0) | 2021.04.01 |
[JPA] MyBatis와 동시 사용 (DTO/엔티티 통합, 연관관계 매핑) (0) | 2021.03.31 |
[JPA] MyBatis와 동시 사용 (DTO/엔티티 분리) (7) | 2021.03.30 |
댓글