강의

멘토링

로드맵

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

gmlwjd4667님의 프로필 이미지
gmlwjd4667

작성한 질문수

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

주문 목록 검색, 취소

상품주문 에러 도와주세요

작성

·

865

0

안녕하세요 선생님 강의 잘듣고 있습니다.

다른 기능은 잘 되는데

상품주문기능중에서 

상품 주문을 submit하면 에러가 나오고

주문내역을 클릭해도 오류가 나옵니다..

저 스스로 해결해볼려고 해봤는데 원인을 찾지 못해서

코드한번 봐주실수있을까요?

 

전체코드파일 링크

 

https://drive.google.com/drive/folders/16rERqFx4v9aXM5_oqzXfoJIqJc240Jeh?usp=sharing

 

 

 

퀴즈

회원 가입 시 화면 입력 데이터를 엔티티 객체 대신 별도의 Form 객체로 받는 주된 이유는 무엇일까요?

데이터베이스 성능을 최적화하기 위해서

화면 종속적인 데이터나 유효성 검증 로직을 분리하기 위해서

JPA 영속성 컨텍스트와 직접적인 관계를 맺기 위해서

코드의 자동 생성 기능을 활용하기 위해서

답변 6

1

다시 확인해보았습니다.

Order 클래스에서 

 

private OrderStatus orderStatus;

@Enumerated(EnumType.STRING)
private OrderStatus status;

로 바꾼 후 필드 이름이 바껴서 발생하는 해당 클래스 내의 setter 사용 2군데 오류나는 것 수정해주세요.

 

동작 확인 할 때 application.yml의 ddl-auto를 create 상태에서 테스트 해주세요.

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

감사합니다 !

0

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

말씀하신대로 stx를 - 로 바꿔주고

status 경로를 제가 명시한 패키지 경로로 고쳤는데 아직 에러가 나와요 ㅜㅜ..

 

 

 

 

 

0

코드에서 두 가지 문제점이 보입니다.

1) 

<input type="text" th:field="*{memberName}" class="formcontrol" placeholder="회원명"/>

formstxcontrol에서 stx를 -로 바꿔주세요

 

2) 

OrderStatus를 보시면 

패키지 경로와 코드에서 명시한 경로가 다릅니다.

jpabook.jpashop.domain와 jpabookkk.jpashoppp.domain;

이 서로 매칭이 되지 않습니다.

 

 

<option th:each=
"status : ${T(jpabook.jpashop.domain.OrderStatus).values()}"

 

 

package jpabookkk.jpashoppp.domain;

public enum OrderStatus {
ORDER, CANCEL
}

0

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

@Transactional 누락된거 잡아서 했는데 또 에러가 나네요..

이번에는 TemplateInputException 인데 제가 해결해볼려고 해봤는데 원인이 뭔지 모르겠어요

혹시 코드 한번 봐주실수 있으실까요..)))

 

 

https://drive.google.com/file/d/15uh6oVTTWW1p_oi4fiVZ1HTzdNl8vCL8/view?usp=sharing

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

혹시 제가 프로젝트 만들떄 ArtifactId 하고  name 을 달리했는데 

경로로 인해 문제가 발생할 수 있을까요..?

질문하신지 오랜 시간이 지났지만 저는 groupid를 다르게 적어서 생긴 문제였습니다.

0

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

해당 에러 상황은 @Transactional이 누락되었을 때 발생하는 상황으로 보입니다.

말씀하신 상황(주문 등록) 과 에러메시지에서의 'persist'가 포함된 것으로 보아 OrderService 혹은

public Long Order 매서드 위(메서드 영역)의 @Transactional이 누락된 것으로 보입니다.

 

메뉴얼 혹은 제공해드리는 프로젝트 코드를 참고하여 @Transactional이 누락되었는지 확인 후 문제가 발생할 경우 프로젝트 코드를 공유해주세요.

 

*중요

크롬 혹은 엣지 브라우저에서 ctrl + shift + n 을 눌러 시크릿모드 창을 띄운 후 시크릿모드에서 링크를 접속하였을 때 액세스 권한이 출력되지 않아야 합니다.

 

관련 오류 참고:

1) java - Spring - No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call - Stack Overflow

 

2) [Spring Data JPA] No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call 에러 해결 (tistory.com)

 

감사합니다.

0

안녕하세요. gmlwjd4667님, 공식 서포터즈 David입니다.

.
액세스 권한이 필요하네요.

아래 링크에 "질문용 파일업로드" 항목을 참고해주세요.

https://bit.ly/3fX6ygx
.
감사합니다.

gmlwjd4667님의 프로필 이미지
gmlwjd4667

작성한 질문수

질문하기