인프런 커뮤니티 질문&답변
findAll 쿼리문?
작성
·
342
0
2:06 -
orderRepository 에
public List<Order> findAllByString(OrderSearch orderSearch){...}
대신
public List<Order> findAllByString(){
return em.createQuery
("select o from Order m where m.orderStatus = :orderStatus", Order.class) .setParameter("name",name)
.getResultList(); }}
-> 이런식으로 코드를 짜도 되나요?
-> 가능하다면 같은방식으로
쿼리 where 절에 member의 name을 적용시킬수있나요?
답변 1
0
안녕하세요. omimabi77님, 공식 서포터즈 OMG입니다.
.
아래 코드 틀에서(=기반으로) 진행이 되어야 할 것 같습니다.
우선 작성하신 코드는 name으로 회원 주문을 찾으시려고하는 것 같은데 name을 받아오는 코드가 없습니다. 그래서 저는 "kim"이란 회원을 생성하고 "kim"을 찾도록 하였습니다.
OrderSearch ordersearch 파라미터는 쿼리에 적용하진 않았기 때문에 코드 상에서 제거하면 되나, 호출하는 코드 등 수정할 곳이 몇 군데 발생하여 수정하진 않았습니다.
디버깅 orders.get(0).getMember().getName() 를 통해 kim이 주문한 회원의 이름이 kim 인 것을 확인하실 수 있습니다.
public List<Order> findAllByString(OrderSearch orderSearch) {
List<Order> orders = em.createQuery("select o from Order o where o.member.name = :name", Order.class)
.setParameter("name", "kim")
.getResultList();
return orders;
}

.
감사합니다.





