• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

프로젝션 임베디드 타입(Address) 쿼리호출 안되는 문제

23.06.17 22:37 작성 23.06.17 23:19 수정 조회수 204

0

아래와 같이 쿼리를 구성했는데

select쿼리가 나가지 않습니다.

어디가 잘못되었는지 궁금합니다..

//임베디드 타입 프로젝션(Address)
Address address = new Address();
address.setCity("경기도 땡땡");
address.setStreet("땡땡동");
address.setZipcode("00000");
Product product = new Product();
product.setName("제발되라");
em.persist(product);

Order order = new Order();
order.setOrderAmount(0);
order.setAddress(address);
order.setProduct(product);

em.persist(order);
em.flush();
em.clear();
em.createQuery("select o.address from Order o", Address.class)
    .getResultList();

 아래와 같이 mapped가 안됬다고 오류가 뜹니다..

답변 2

·

답변을 작성해보세요.

1

kate님의 프로필

kate

질문자

2023.06.17

오류는 잡았고, @Entity(name="orders")
라고 선언했던걸

@Entity

@Table(name="orders")
이렇게 수정했더니 되네요
어떤 차이 때문에 이런 현상이 발생하는 건지 모르겠습니다!

0

y2gcoder님의 프로필

y2gcoder

2023.06.18

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

@Entity의 name 속성은 테이블명 뿐만 아니라 JPQL에서 사용할 Entity의 이름(위에서 JPQL에서 사용하셨던 Order라는 이름)마저 바꾸는 것으로 보입니다. 그래서 JPQL에서 Order에 해당하는 Entity를 찾지 못한 것으로 보입니다. 다음 링크(클릭)을 참고해주십시오!

감사합니다.


kate님의 프로필

kate

질문자

2023.06.19

그렇다면 @Entity(name = "Orders")

로 지정해둔 뒤 JPQL의 Entity이름을 Orders로 지정하면 되지 않을까? 라는 생각을 해봤습니다.

em.createQuery("select o.address from Orders o", Address.class) .getResultList();

그런데 되지 않더라구요... 엔티티 클래스명과도 어느정도 연관이 있는것인지...?

 

 

 

y2gcoder님의 프로필

y2gcoder

2023.06.19

혹시 괜찮으시다면 제가 직접 동작하는 코드를 확인하고 싶습니다!

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

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

https://bit.ly/3fX6ygx


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


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

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

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

감사합니다.