Search
Duplicate
✏️

엔티티 변경 전이 오류

문제 정의 (원인)

car와 catalog의 @OneToMany 연관관계 매핑에서 card save 후, catalog의 cardlist에 card가 자동 저장되지 않아 cardlist가 empty 상태인 것을 발견하였습니다.
@OneToMany(mappedBy = "catalog", cascade = CascadeType.ALL, orphanRemoval = true) private List<Card> cardList = new ArrayList<>(); @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "catalog_id") private Catalog catalog;
Java
복사

조치 방안 검토 (분석)

일반적인 @OneToMany 관계에서는 자식 엔티티를 저장하면 부모 엔티티에 대한 변경이 발생할 때 자동으로 업데이트 됩니다. 특히 cascadeType.all을 사용하면 모든 변경이 전파됩니다.
그러나 fetchType이 Lazy로 설정되면 연관 엔티티들이 즉시 로드되지 않아 cardList가 즉시 업데이트 되지 않을 수 있으며 이외에도 JPA 구현 방식에 따라 자동 업데이트가 실행되지 않는 경우가 발생할 수 있음을 알게되었습니다.

조치 방안 구현 (해결 + 느낀점)

따라서 card가 save된 이후, cardlist에 add card를 직접 실행하도록 구현하는 방법으로 해결하였습니다.
cardRepository.save(card); catalog.getCardList().add(card);
Java
복사