2012-02-05 78 views
0
語法

我檢查個createCriteria方法here個createCriteria和列表Grails中

這個語句聲明瞭一個HibernateCriteriaBuilder對象

def c = Account.createCriteria() 

然後調用

def results = c.list { 
like("holderFirstName", "Fred%") 
and { 
    between("balance", 500, 1000) 
    eq("branch", "London") 
} 
} 

然而,從API ,HibernateCriteriaBuilder沒有任何list()方法。我想念什麼?

此外,可有人向我解釋更復雜的語法以下

def results = c.list (max: 10, offset: 10) { 
    like("holderFirstName", "Fred%") 
} 

它是一個列表方法有兩個參數和封閉?

回答

0

您不必擔心list(),它是一個動態方法,您只是假設它存在。

下面是與尋呼信息的查詢 - ,說返回最大10個記錄開始偏移10,其中holderFirstName就像佛瑞德%

def results = c.list (max: 10, offset: 10) { 
    like("holderFirstName", "Fred%") 
} 
1

list()是動態的方法,生成/ HibernateCriteriaBuilder處理(見source code

而且你說的沒錯,這個語法是通過一個封閉,但目前的示例還使用參數映射(max: 10, offset: 10是地圖),所以它像list(Map params, Closure c)

的方法