작성자: 고승원
이미지가 사용되는 모든 엔티티에서 Image 엔티티를 사용하기 때문에 라이프사이클이 모두 다르다는 판단하에 연관 관계를 끊었다.
Order 테이블과 조인을 통해 내 주문 목록을 보여줘야 한다.
조건
List<Order> orders = jpaQueryFactory
.select(qOrder)
.from(qOrder, qImage)
.where(
qOrder.id.eq(qImage.referenceId),
qImage.imageType.eq(ORDER)
)
.fetch();
세타조인은 카티션 프로덕트 + select 연산으로 이루어지기 때문에 효율이 좋지 않다. 그리고 left outer join같은 외부 조인이 불가능 하다.
예전 버전은 안되지만 이제 연관관계가 없더라도 조인이 가능하다.
List<Order> orders = jpaQueryFactory
.select(qOrder, qImage)
.from(qOrder)
.leftJoin(qImage)
.on(
qOrder.id.eq(qImage.referenceId),
qImage.imageType.eq(ORDER)
)
.fetch();
List<OrdersResponse> orders = jpaQueryFactory
.select(Projections.bean(
OrderResponse.class,
order.id,
등등
)
)
.from(qOrder);