Grails映射多个字段的排序::对多个映射条目进行Groovy排序

vir*_*yes 17 sorting grails groovy

难倒在这一个.在Grails中,似乎无法在域映射中的多个列上定义默认排序la static mapping = {sort'prop1 desc,prop2 asc'}或{sort([prop1:'desc',prop2:'asc']) }.只有第一列被排序,跛脚.

类似地,当尝试Groovy在多个列上对Grails findAllBy查询进行排序时,第二种排序会覆盖第一种.

def list = [[rowNum:2,position:3],[rowNum:1,position:2],[rowNum:3,position:1]]

list.sort {it.rowNum}的.sort {it.position}

在后一种情况下显然错过了船,经常排序.我看过帖子重新:实现可比性,但如果可能的话,寻找更简洁的东西.

Pet*_*ser 31

这是一个Groovy解决方案.仍然基本上实现了比较器.

list.sort { map1, map2 -> map1.rowNum <=> map2.rowNum ?: map1.position <=> map2.position }
Run Code Online (Sandbox Code Playgroud)


CSQ*_*CSQ 7

感谢GreenGiant的链接,我们发现该问题已在2.3版本中修复.

还有示例代码:

static mapping =
    { sort([lastname:'asc', name:'asc']) }
Run Code Online (Sandbox Code Playgroud)

它在2.4.3中为我工作