2011-07-01 5 views
0

어떻게 동적 Grails 검색을 할 수 있습니까?

이 도메인 클래스를 고려하십시오 :

class House { 
    Integer room 
    Integer bathroom 
    Date builtDate 
    Date boughtDate 

    String roadName 

    String getSearch(){ 
    return room + " " + bathroom + " " + builtDate + " " + boughtDate 
    } 
} 

내 검색 메커니즘에 대한 몇 가지 필드가 있다고 상상해보십시오 : room, bathroom, builtDate, purchasedDate로 검색하십시오.

사용자는 이러한 매개 변수의 조합을 검색 할 수 있어야합니다. 그는 단지 하나 또는 전부를 사용할 수 있습니다. 컨트롤러 코드에 대한 도움이 필요합니다. 나는 HQL Dynamic Finders를 사용하여 그렇게 할 수 없다는 것을 확신하므로 SQLS 문장을 사용해야 할 것입니다.

도움/힌트를 주시면 감사하겠습니다.

답변

0

아마도 최대 절전 모드를 사용하고 싶을 것입니다.

if (room && bathroom && builtDate && boughtDate) { 
    House.withCriteria { 
    if (room) { 
     gte 'room', room 
    } 
    // ... 
    } 
} 

자세한 내용은 createCriteria 및 withCriteria의 문서를 참조하십시오.

+0

hm 작동하지 않습니다. 내가 10 개의 매개 변수가 있다면? 그 모든 10 가지 조합에 대해 ifs를 수행해야합니까? –

+0

일부 메타 프로그래밍을 사용하면 좀 더 간단하게 처리 할 수 ​​있습니다. 처리해야하는 매개 변수의 목록을 정의한 다음 첫 번째 if 문에 any 메서드를 사용하고 criteria 객체를 작성하는 while 루프를 사용합니다. 어느 쪽이든 기준 개체는 원하는대로 복잡한 SQL을 작성하는 가장 좋은 방법입니다. – Blacktiger

관련 문제