Spring

JPA Could not write JSON: failed to lazily initialize a collection of role 에러 해결

curiousKidd 2024. 4. 4. 11:16
반응형

개발 중, Database 설정을 통해 DB 값을 가져오는 과정에서 다음과 같은 오류를 경험했습니다

에러내용 :

JPA Could not write JSON: failed to lazily initialize a collection of role

상황 설명

저는 두 개의 Database를 연결하여 사용하는 환경에서 작업하고 있었습니다. 그런데 Sub Database의 값을 가져오는 과정에서 위와 같은 오류가 발생했습니다.

JPA를 사용중이었는데 연결된 table 의 정보를 가지고 올 때 @OneToMany(fetch = FetchType.LAZY) 옵션이 문제가 되었습니다.

추측 원인

개인적으로는 Sub Database를 사용하는 경우, EntityManager가 유지되지 않아 LAZY 옵션이 유효하지 않았던 것으로 판단됩니다.
즉, EntityManager가 작업 도중 닫혀서 관련 데이터를 초기화할 수 없게 되어 오류가 발생한 것입니다.

해결 방법

문제를 해결하기 위해 @Transactional 어노테이션을 사용했습니다.
이 어노테이션은 메서드 내에서 트랜잭션을 보장하여, 모든 작업이 완료될 때까지 EntityManager를 유지시켜줍니다.수정된 코드는 아래와 같습니다.

위와 같은 방식으로 코드를 수정한 후, 정상적으로 개발을 진행할 수 있었습니다.
@Transactional을 사용하여 트랜잭션 범위를 명확히 정의한 것이 문제 해결의 핵심이었습니다.

반응형