인프런 커뮤니티 질문&답변
in :orderids 일 때 DB 쿼리에 대하여 (사소함)
해결된 질문
작성
·
384
1
사소한 것 같은데 호옥시나 해서 질문합니다.
List<OrderQueryDto> orderDtos = findOrderQueryDtos();
List<Long> orderIds = orderDtos.stream().map(o -> o.getOrderId()).collect(Collectors.toList());
List<OrderItemQueryDto> orderItemDtos = em.createQuery("select new jpabook.jpashop.repository.order.query" +
".OrderItemQueryDto(oi.order.id, i.name, oi.count, oi.orderPrice)" +
" from OrderItem oi join oi.item i where oi.order.id in :orderIds",
OrderItemQueryDto.class).setParameter("orderIds", orderIds).getResultList();
일 때,
orderIds = [4, 11] 인데
이걸
in :orderIds에 넣으면
[4, 11]이 아니라
내부에서 자동으로 (4, 11)로 괄호가 바뀌어서 DB에 날라가는 거 맞나요 ?
List 구조를 보고, 쿼리를 보면 그런 것 같은데 혹시나 혹시나 해서
사소하게 물어봅니다 :]
답변 1
1
안녕하세요. relate16님, 공식 서포터즈 OMG입니다.
JQPL에서 컬렉션 in절 관련 질문이신것 같습니다.
질문 내용과 관련하여 스택오버플로우의 3개의 글을 확인하였는데요,
확인해보니 숙지하고 계신 내용대로 사용하시면 될 것 같습니다.
아래의 링크를 참고해주세요.
참고
java - Setting a parameter as a list for an IN expression - Stack Overflow
sql - JPQL IN clause: Java-Arrays (or Lists, Sets...)? - Stack Overflow
java - Adding IN clause List to a JPA Query - Stack Overflow
감사합니다.






앗 참고할 수 있는 사이트도 하나 배웠네요
정말 감사합니다 :]