인프런 커뮤니티 질문&답변

JH K님의 프로필 이미지
JH K

작성한 질문수

실전! 스프링 데이터 JPA

공통 인터페이스 적용

save the transient instance before flushing 에러

작성

·

210

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 기본편에서 자세히 설명해드립니다^^

감사합니다.

JH K님의 프로필 이미지
JH K

작성한 질문수

질문하기