entityManager.createQuery(
"select" +
" new jpabook.jpashop.repository.OrderSimpleQueryDTO(o.id, m.name, o.orderDate, o.orderStatus, d.address)" +
" from Order o" +
" join o.member m" +
" join o.delivery d", OrderSimpleQueryDTO.class)
.getResultList();
[띄워쓰기]에 주의해 줘야 한다.
위 코드는 정상적인 코드이다.
아래의 코드를 보자.
public List<OrderSimpleQueryDTO> findOrderDTOs() {
// new OrderSimpleQueryDTO(매개변수) 연산자를 통해 JPQL에서 바로 DTO로 변환해서 반환받을 수가 있다.
return entityManager.createQuery(
"select" +
"new jpabook.jpashop.repository.OrderSimpleQueryDTO(o.id, m.name, o.orderDate, o.orderStatus, d.address)" +
" from Order o" +
" join o.member m" +
" join o.delivery d", OrderSimpleQueryDTO.class)
.getResultList();
}
이건 에러를 발생시키는 JPQL 쿼리문이다.
쿼리의 2번째 줄을 보면 new 앞에 [띄워쓰기]가 되어 있지 않다.
그러면 JPQL : "selectnew jpabook.jpashop.repository~~~"로 작성이 되 버린다.
(엔터프라이즈 버전에서는 이런 것까지 빨간줄로 잡아 준다)
'CS 잡지식' 카테고리의 다른 글
| DTO에는 2종류가 있다(Feat. RequestDTO, ResponseDTO) (1) | 2023.05.04 |
|---|---|
| DB 최적화 기법 - Projection 대상을 필요한 것만으로 한정(Feat.DTO) (2) | 2023.05.04 |
| 인텔리J의 변수 명, 메서드 명, 클래스 명 한방에 수정하기(Feat. Shift + f6) (0) | 2023.05.04 |
| [Lazy로딩] 설정으로 인해 발생할 수 있는 치명적인 JPA 버그(매우 매우 중요)[feat. Hibernate5Module] (0) | 2023.05.03 |
| Gradle과 Maven의 차이 (0) | 2023.05.03 |