2012-07-11 3 views
0

와 findBy를 사용하여 나는 제품 도메인이 있습니다 같은 속성하지만 여러 값

Product { 
    String name 
} 

가 지금은 issuedProductInstancerequestedProductInstance 필요합니다. 이를 위해 나는 방법은 DB를 두 번 명중 이러한 방법으로

def find(String issuedProduct,String requestedProduct){ 
    Product issuedProductInstance=Product.findByName(issuedProduct) 
    Product requestedProductInstance=Product.findByName(requestedProduct) 
} 

findBy을 사용했다. 하나의 쿼리 만 실행하여 두 제품을 모두 찾을 수있는 방법이 있습니까?

답변

0

는 Grails에 대해 알고하지 마십시오 ,하지만 당신은 단지 다음 쿼리가 필요합니다,이 쿼리는 0, 1 또는 2 제품을 반환 할 수 물론

select p from Product p where p.name in (:names) 

을 당신은 알고 목록을 반복해야 이름으로 "issuedProduct"가 있고 다른 이름은 "issuedProduct"입니다.

+0

예, 가능합니다. Product.findAllByNameInList ([issuedProduct, requestedProduct])로 작성할 수 있습니다. 하지만 issuedProductInstance 또는 requestedProductInstance가 null이고이 쿼리가 null 객체를 반환하지 않을 경우 차이점 오류 메시지를 표시하려고합니다. –

+0

빈 목록을 반환하면 둘 다 존재하지 않습니다. 크기 1의 목록을 반환하면 그 중 하나는 존재하지 않습니다. 크기가 2 인 목록을 반환하면 둘 다 존재합니다 (이름이 고유하다고 가정 할 경우). –

+0

JB Nizet ... 감사합니다. –