티스토리 뷰
오류
[오류]org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
김쓰로그 2022. 12. 2. 13:31
오류상황
개인공부를 위한 프로젝트에서 프로젝트 실행이전, DB에 데이터를 넣어주기 위해 CommandLineRunner 인터페이스를 상속받은 SetUp 클래스를 실행시켰습니다.
# SetUp 클래스는 아래와 순서로 동작을 합니다.
- 팀 객체 생성 후 DB에 저장
- 팀 객체 조회 후 생성한 멤버 객체와 연관관계를 맺은 후 DB에 저장
이 때 DB에 저장한 팀을 조회해서 생성한 멤버와 연관관계 메서드를 통해 연관관계를 맺어주려 했는데 이 때 오류가 발생했습니다.
private void setTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
=> team.getMembers()에서 오류 발생
오류해석
failed to lazily initialize a collection of role:
study.querydsl.team.domain.Team.members, could not initialize proxy - no Session
즉, 지연로딩에 실패했다는 것입니다.
저는 해당 클래스에 @Transactional 어노테이션을 걸어주지 않았습니다.
그럼 이때 트랜잭션은 각각의 메서드(save, findById)가 실행될 때 발생합니다.
따라서 영속성 컨테스트도 각각의 메서드 단위로 실행되었다가 종료됩니다.
즉, 실행시키려하는 SetUp클래스에 메서드를 트랜잭션으로 묶어주면 해결이 됩니다!!
=> @Transactional 어노테이션을 걸어주면 해결됩니다!!
'오류' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 4673번
- 스프링
- 덧칠하기
- list
- 파이썬
- 백준#잃어버린 괄호#1541
- 게시판#자바#JPA#Entity
- 7568
- querydsl
- 백준#서강근육맨#20300
- 대충 만든 자판
- controller
- arraylist
- 회고
- 서블릿#Servlet
- 백엔드#게시판
- java
- 11659
- 오류
- HTTP#HTTP특징
- 자바
- 사탕 게임#백준#3085
- 1316번
- springboot
- MVC
- this()
- 프로그래머스
- 1978
- 백준
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함