inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

주문 목록 검색, 취소

상품 주문후 디비에 저장은 되지만 웹 페이지에서 조회가 되지 않습니다.

563

황인호

작성한 질문수 4

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
상품 주문 후 주문은 디비에 들어가 있지만 주문 목록을 조회해 보면 주문이 조회되지 않습니다.

또한 검색 창에서 회원 이름과 주문 상태를 선택해서 검색을 하면 white label error page가 나옵니다.
해당 화면 첨부해서 질문 드려요 어디가 잘못 된 걸까요 ㅠ?스프링부트 에러페이지.JPG

java spring 웹앱 spring-boot jpa

답변 2

0

y2gcoder

보내주신 코드 확인해보았습니다!

 

먼저 저는 실행했을 때 주문 등록 시 memberId 로 null이 들어오는 에러가 간헐적으로 발생했습니다.

확인해보니 Spring Boot 3.2.x 버전을 사용하고 계셨습니다. @RequestParam 애노테이션에 이름을 잘 적어주셨지만... 해당 에러가 지속적으로 발생해서 저는 build tool을 gradle로 변경하여 해결했습니다!

image황인호님께서 말씀해주신 주문 목록 조회 안되는 버그는 확인해본 결과 OrderRepository 의 findAll 쿼리에 강의와 달랐습니다. 강의에서는 기본적으로 조건이 되는 memberName이나 orderStatus의 null 체크를 해준 후에 동적으로 조건을 추가해주도록 JPQL 이나 Criteria를 사용하고 있지만,

image직접 작성해주신 JPQL은 고정된 JPQL을 사용하고 계십니다. 이렇게 하면 검색 조건이 없이 검색했을 때 결과적으로 나오는 쿼리가 없습니다. 아래는 위의 JPQL을 사용해서 검색 조건 없이 날렸을 때의 JPQL입니다.
image보시면 status=NULL and name like NULL 인 주문을 조회하는 JPQL이 날아간 것을 보실 수 있습니다.

한편 검색 조건을 넣었을 때 에러가 발생하는 이유는 두가지가 있습니다.

  1. 양방향 연관관계에서는 엔티티를 그대로 프론트 화면에 던져줄 때 ToString 구현하시면 안됩니다!

image그 이유에 대해서는 다음 링크(클릭)을 참고해주십쇼!

  1. 또한 Order에서 OrderItem에 대한 cascade 옵션이 누락되어있었습니다.

     

    image

    주문 저장할 때 orderitem이 같이 저장되도록 cascade 옵션을 주고 있습니다. 옵션을 주지 않으면 같이 저장되지 않아서 주문 목록 화면의 루프 도는 부분에서 1번째 orderitem을 찾을 수 없어 에러가 발생합니다!

해당 부분까지 모두 수정하면 아마도

image

이렇게 정상 화면을 보실 수 있습니다!

0

y2gcoder

안녕하세요. 황인호님, 공식 서포터즈 y2gcoder입니다.

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

1

황인호

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

구글드라이브 파일 남겨드려요!

문제 영역은 주문 완료 후 주문 조회가 되지 않는 사항입니다!

sdk 설정 오류

0

53

2

오탈자 - @Transactional

0

56

1

src/test/resources 테스트 경로 문제

0

50

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

64

1

MemberRepositoryTest 실행오류

0

81

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

183

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

142

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

51

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

60

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

103

1

멤버서비스테스트 부분에서 막힙니다.

0

165

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

116

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

120

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

114

1

24분 27초 연관관계 편의 메서드 위치

0

113

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

109

2

빌드 툴, Gradle

0

59

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

77

2

Repository에서 EntityManager 주입 방식 차이

0

90

1

롬복과 사용자 정의 setter 메서드

0

72

1

주문 목록 조회 fetch join 질문드립니다

0

82

1

dirty checking 질문드립니다.

0

83

1

동시성 관련 질문입니다

0

75

1