我在查询中使用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])
答案 0 :(得分: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和崇拜标准查询,但这是个人偏好的问题。