티스토리 뷰

오류상황

개인공부를 위한 프로젝트에서 프로젝트 실행이전, 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
링크
«   2024/09   »
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
글 보관함