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

채한나님의 프로필 이미지
채한나

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 목록 검색, 취소

주문 submit 시에 save the transient instance before flushing 에러가 발생합니다.

작성

·

388

1


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
 
에러 메시지 내용은 org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : jpabook.jpashop.domain.Order.member -> jpabook.jpashop.domain.Member;  입니다.
 
Member와 Order 클래스의 영속성 전이 문제인 것 같아서
각각
cascade = CascadeType.ALL
을 추가해주면 에러메시지는 사라지지만
주문내역에서 회원명이 나오지 않습니다ㅠㅠ
또 회원목록에서 등록하지 않은 회원이 생성됩니다.
 
그래서 일단 cascade 추가 전
Order 클래스와 Member 클래스의 코드 첨부합니다.
 
 
구글 드라이브 주소입니다.
https://drive.google.com/file/d/1j0oevd3vhsXt8e1LwuuVgS7fu6RLY8yN/view?usp=sharing

답변 1

1

안녕하세요. 채한나님, 공식 서포터즈 OMG입니다.


를 아래와 같이 바꿔주세요.


cascade = CascadeType.ALL

을 지정하고 나서 이름이 출력안된다고 하셨는데

위의 코드 때문에 주문 등록시 새로운 회원 데이터가 생성 되어 해당 회원의 데이터와 주문이 매핑되어 

시퀀스(id)를 제외한 어떠한 데이터도 없는 회원 때문에 이름이 비어있는 것입니다.

회원 목록 보시면 알 수 있어요.


감사합니다.

채한나님의 프로필 이미지
채한나
질문자

감사합니다!!

채한나님의 프로필 이미지
채한나

작성한 질문수

질문하기