• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

save the transient instance before flushing 에러

20.01.19 18:19 작성 조회수 117

0

안녕하세요.

MemberRepositoryTest 시에 

List<Member> all = memberRepository.findAll(); 에서 

save the transient instance before flushing 에러가 발생을 하는데요.

인터넷에서 찾아보니 casecade 옵션을 넣어야 한다고 하는데 강의하신 소스와 자료와는 차이가 없는데요.

Member 엔티티의 Team 엔티티와의 @ManyToOne 에 casecade 를 적용하니 오류는 해결이 되었습니다.

혹시 이유를 알 수 있을까요?

답변 1

답변을 작성해보세요.

1

안녕하세요. JH K님

JPA의 모든 엔티티는 영속 상태일 때만 연관관계를 맺을 수 있습니다.

아마 중간에 em.persist(member)가 없거나, 또는 em.persist(team) 코드가 빠진 것 같습니다.

한번 살펴보세요^^

(혹시 그래도 안보이면, 전체 테스트 코드를 올려주세요.)

cascade는 강제로 연관된 엔티티들을 영속 상태로 만들어버리는 옵션입니다.

이 옵션은 어느정도 위험성이 있어서 명확하게 이해하고 사용해야 하는데, JPA 기본편에서 자세히 설명해드립니다^^

감사합니다.