grails - Groovy/Grails:设置max参数以获得完整集合的一定数量的结果

标签 grails gorm grails-2.0 grails-controller

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

这是查询的示例:

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])

最佳答案

如果您不介意使用条件查询,则应执行以下操作

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并偏爱标准查询,但这是个人喜好问题。

关于grails - Groovy/Grails:设置max参数以获得完整集合的一定数量的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337582/

相关文章:

grails - 将Grails请求的主体和参数合并为单个命令?

multithreading - Grails,线程,自动服务

Grails 与静态映射表的关系

grails - 如何将Javassist实例转换为特定域的实例

grails - Grails 2升级问题

eclipse - Grails测试 war 创造错误

javascript - withFormat 闭包不发送基于 ACCEPT header 的响应

sql-server - 使用SQL Server在grails上映射map数据类型

validation - Grails域对象在验证期间意外保存

ruby-on-rails-3 - 如何控制来自 Controller 中表单的动态行