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

ryu님의 프로필 이미지
ryu

작성한 질문수

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

주문 기능 테스트

orderitem.size 에서 같은 인스턴스(엔티티)가 중복 저장되는 문제

작성

·

178

0

orderItems.size 를 테스트 할때 같은 인스턴스가 

orderitem에 중복저장 되는 것 같습니다. 

1이 아닌 2가 나와요.

 

List<OrderItem> orderItems = getOrder.getOrderItems();

for(OrderItem orderItem : orderItems) {

    sout (orderItem);

}

하니까 같은 래퍼런스값을 가진 게 2번 똑같이 나왔습니다.

어디서 발생한건지 찾을 수 없어서 질문드려요

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. ryu님

문제는 OrderItem.setOrder 코드입니다.

다음 부분을 주석처리 해주시면 정상 동작합니다.

Order.addOrderItem 코드에서도 orderItems.add(orderItem); 코드를 통해서 넣고

추가로 다음 코드에서도 orderItem을 넣기 때문입니다. (중복으로 등록)

    /** 연관관계 편의 메서드**/
public void setOrder(Order order){
this.order = order;
// order.getOrderItems().add(this); 주석처리해주세요.
}

양방향 연관관계에서는 이런 부분을 주의해야 합니다.

감사합니다.

ryu님의 프로필 이미지
ryu
질문자

아이고 이런. 감사합니다.

 

0

안녕하세요. ryu


전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 권한 문제 꼭 확인해주세요


감사합니다

ryu님의 프로필 이미지
ryu
질문자

https://drive.google.com/file/d/1xhiQIqk8oEHJ0EzNckVHfMLTVeDegSPF/view?usp=sharing

ryu님의 프로필 이미지
ryu
질문자

이렇게 하면 될까요?

 

네, 확인후 답변 드릴게요

김영한님의 프로필 이미지
김영한
지식공유자

ryu님 내부에 실행 가능한 코드가 없습니다. 확인해주세요.

추가로 어떤 부분을 어떻게 실행해야 해당 부분을 확인할 수 있는지도 자세히 알려주세요.

ryu님의 프로필 이미지
ryu
질문자

test 에서 orderServiceTest 에서 발생한 문제입니다.

다만, 수업을 쭉 진행하면서 localhost 에서 직접 order 을 넣을때는 하나만 들어가서 정상적으로 동작했습니다..

test 를 잘못 작성한것 같은데 잘 못찾겠습니다.

 

작성하신 코드가 하나도 없습니다. 올리신 구글드라이브 링크에서 다운로드해서 실행해보시면 아실 수 있어요

혹은 링크 들어가서 OrderServiceTest코드 있는지 확인해주세요.

 

확인 후 다시 올려주세요

ryu님의 프로필 이미지
ryu
질문자

업로드 방법 이 잘못되었나봐요. 다시올립니다.

test 에 orderServicetest 에서 문제가 발생하고, test가 아닌 다른 곳은 정상적으로 동작해요

ryu님의 프로필 이미지
ryu
질문자

https://drive.google.com/file/d/1xhiQIqk8oEHJ0EzNckVHfMLTVeDegSPF/view?usp=sharing

 

ryu님의 프로필 이미지
ryu

작성한 질문수

질문하기