Grails中的createCriteria和list语法

时间:2012-02-05 08:07:50

标签: grails syntax criteria

我正在检查createCriteria方法here

此语句声明了一个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%")
}

是一个带有两个参数和闭包的列表方法吗?

2 个答案:

答案 0 :(得分:1)

这个list()是动态方法,由HibernateCriteriaBuilder生成/处理(参见source code

你是对的,这个语法用于传递一个闭包,但是当前的例子也使用参数作为一个地图(max: 10, offset: 10是一个地图),所以这是一个类似list(Map params, Closure c)的方法

答案 1 :(得分:0)

你不必担心list(),它是一个动态方法,你只是假设它存在。

下面是一个包含分页信息的查询 - 表示返回最多10条记录,以偏移量10开头,其中holderFirstName就像Fred%

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