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
를 설정했을 때 오류가 발생합니다.
해결
아래 두가지 방법중 하나로 설정을 변경합니다.
-
open-in-view: true 로 변경
-
@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;
}