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

+ Recent posts