我在查询中使用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/