강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

omimabi77님의 프로필 이미지
omimabi77

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 리포지토리 개발

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;
}

 

image
.
감사합니다.

omimabi77님의 프로필 이미지
omimabi77

작성한 질문수

질문하기