【问题标题】:createCriteria and list syntax in GrailsGrails 中的 createCriteria 和列表语法
【发布时间】:2012-02-05 08:07:50
【问题描述】:

我正在检查 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%")
}

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

【问题讨论】:

    标签: grails syntax criteria


    【解决方案1】:

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

    你说得对,这个语法是用来传递闭包的,但当前的例子也使用参数作为映射(max: 10, offset: 10 是映射),所以它是用于像 list(Map params, Closure c) 这样的方法

    【讨论】:

      【解决方案2】:

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

      下面是一个带有分页信息的查询 - 表示返回最多 10 条记录,从偏移量 10 开始,其中 holderFirstName 类似于 Fred%

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 2016-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多