오류 해결

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를 사용하여 해당 속성을 페치조인하여 선 프록시 초기화