Could not write JSON: failed to lazily initialize a collection of role 에러는 주로 직렬화 과정에서 지연 로딩된 컬렉션을 접근하려 할 때 발생한다.
문제
Order 엔티티의 productIds 필드가 지연 로딩으로 설정되어 있고, 트랜잭션 범위를 벗어나 이 컬렉션에 접근하려 해서 LazyInitializationException이 발생했다. 이로 인해 JSON 직렬화에 실패할 수 있다.
해결 방안
Order 엔티티의 productIds 컬렉션에 fetch = FetchType.EAGER를 설정
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "order_product_ids", joinColumns = @JoinColumn(name = "order_id"))
@Column(name = "product_id")
private List<Long> productIds;
'스프링 심화 TIL' 카테고리의 다른 글
Docker 명령어 (0) | 2024.08.16 |
---|---|
캐싱 전략 (0) | 2024.08.13 |
캐싱 java.io.NotSerializableException (0) | 2024.08.11 |
@ElementCollection (0) | 2024.08.08 |
정수 내림차순으로 배치하기 (0) | 2024.08.08 |