220917 save the transient instance before flushing 에러

Jongleee·2022년 9월 17일
1

TIL

목록 보기
56/737

save the transient instance before flushing 에러

원인

매핑된 개체를 저장할때 FK가 아직 영속되지 않아 생긴 영속성 전이(CASCADE)에 대한 오류 발생
N:1 관계에서 연결된 엔티티 객체를 생성 시 FK가 필수로 필요한데, FK가 될 부모객체가
이러한 경우 Member를 영속화 할때, 연관된 Team의 PK가 아직 영속화 되지 않아 오류를 발생하게 됩니다.

해결책

  1. CascadeType 지정
    Member 엔티티에 @ManyToOne(cascade = CascadeType. ) 옵션 추가

    CascadeType.ALL : 모두 적용
    CascadeType.PERSIST : 영속
    CascadeType.MERGE : 병합
    CascadeType.REMOVE : 삭제
    CascadeType.REFRESH : REFRESH
    CascadeType.DETACH : DETACH

  2. FK를 가지는 엔티티를 먼저 영속화 후 엔티티 영속화

    엔티티에 CascadeType를 지정 하지 않아도, FK 즉 부모 엔티티를 영속화 후 추가하면 오류가 해결됩니다.

0개의 댓글