오류 해결
failed to lazily initialize a collection of role: could not initialize proxy - no Session
코딍코딍
2023. 1. 11. 15:14
원인
지연로딩을 사용한 경우, 트랜잭션이 닫혀있을 때 프록시를 초기화하였을 시 발생하는 오류다.
트랜잭션 밖에서(영속성 컨텍스트가 종료된 상태) 프록시를 초기화하여서 발생.
JPA에서 지연로딩을 하려면 항상 영속성 컨텍스트가 있어야 한다.
해결방법
1. FetchType.LAZY을 FetchType.EAGER로 바꾸기 => JPA 사용시 LAZY는 필수이므로 권장 X
2. @Transaction을 사용해 같은 트랜잭션으로 묶어주기
3. @EntityGraph를 사용하여 해당 속성을 페치조인하여 선 프록시 초기화