2011-07-01 19 views
0

考慮這個領域類:我該如何做一個動態的Grails搜索?

class House { 
    Integer room 
    Integer bathroom 
    Date builtDate 
    Date boughtDate 

    String roadName 

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

我想象一下,我的搜索機制幾個領域:由房,浴室,builtDate,boughtDate搜索。用戶應能夠搜索這些參數的任意組合。他只能使用一個或全部。我的控制器代碼需要一些幫助。我幾乎可以肯定,我無法使用HQL動態查找器來做到這一點,所以我將不得不使用SQLS的說明。

任何幫助/提示將不勝感激。

回答

0

您可能想要使用休眠條件。沿線的東西:

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

查看有關createCriteria和withCriteria的文檔以獲取更多信息。

+0

hm不會工作。如果我有10個參數怎麼辦?我必須爲所有這10個組合做些什麼? –

+0

你可以通過一些元編程使事情變得更簡單...定義你需要處理的參數列表,然後使用任何方法爲第一個if語句和while循環構建標準對象。無論哪種方式,標準對象是構建複雜SQL的最佳方式,就像你想要的那樣。 – Blacktiger