【问题标题】:Groovy/Grails: Set max parameter to get certain number of results of a complete setGroovy/Grails:设置最大参数以获得完整集合的一定数量的结果
【发布时间】:2014-01-24 16:26:20
【问题描述】:

我在查询中使用 max 参数来指定一定数量的结果,以便一次加载 20 个。但是,我以它们的排序方式对它们进行排序:首先是最新的,然后是类型,然后是名称。如果我得到完整的结果集(max = 0),它排序很好,我得到了预期的结果。但是,如果我想一次获得 20 个,我不会像我预期的那样获得前一个结果的前 20 个结果。如何设置 max 参数以获得完整结果集的前 20 个结果?感谢您提前提供任何帮助。

这是一个查询示例:

def productXML = 
     Product.findAll("from Product as p where p.is_active = 1 and p.type = :type 
                      ORDER BY p.${params.sort} ORDER BY p.is_new, p.type, p.name DESC", 
                      [type: type], [max: params.max, offset: params.offset])

【问题讨论】:

  • 一些示例代码会有所帮助
  • @BurtBeckwith 更新查询
  • 你可以有多个ORDER BY子句吗?
  • @Don 当我将最大值设置为 0 时它可以正常工作
  • @ninjasense 我猜你可以 - 我不知道

标签: grails grails-orm grails-2.0 grails-controller


【解决方案1】:

如果您不介意使用条件查询,以下应该可以工作

List<Product> queryResults = Product.withCriteria {
  eq('is_active', 1)
  eq('type', type)

  order(params.sort, "asc")
  order("is_new", "asc")
  order("type", "asc")
  order("type", "desc")

  maxResults(params.max)
  firstResult(params.offset)
}

我讨厌 HQL 并喜欢标准查询,但这是个人喜好问题。

【讨论】:

  • 我想知道如何像上面代码中那样使用闭包。
  • 我希望按照我的查询的编写方式来执行此操作,而不是您给我的条件查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多