Could not write JSON: failed to lazily initialize a collection of role: …: could not initialize proxy – no Session

By | 2024년 3월 16일
Table of Contents

Could not write JSON: failed to lazily initialize a collection of role: …: could not initialize proxy – no Session

이상한 오류가 발생하여 해결방법을 적어 놓습니다.

현상

@Entity
public class Member {
    @ManyToMany
    @JoinTable(
            name = "user_authority",
            joinColumns = {@JoinColumn(name = "username", referencedColumnName = "username")},
            inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")})
    private Set<Authority> authorities;
}
spring:
  jpa:
    open-in-view: false

엔터티에 @ManyToMany 를 설정한 상황에서, open-in-view: false 를 설정했을 때 오류가 발생합니다.

해결

아래 두가지 방법중 하나로 설정을 변경합니다.

  1. open-in-view: true 로 변경

  2. @Fetch(FetchMode.JOIN) 추가

@Entity
public class Member {
    @ManyToMany
    @Fetch(FetchMode.JOIN)
    @JoinTable(
            name = "user_authority",
            joinColumns = {@JoinColumn(name = "username", referencedColumnName = "username")},
            inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")})
    private Set<Authority> authorities;
}

답글 남기기