Grails映射在多个字段排序:: Groovy在多个映射条目上排序 [英] Grails mapping sort on multiple fields :: Groovy sort on multiple map entries

查看:106
本文介绍了Grails映射在多个字段排序:: Groovy在多个映射条目上排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

难住这个。在Grails中,似乎无法在域映射拉丁静态映射中的多个列上定义默认排序:{sort'prop1 desc,prop2 asc'}或{sort([prop1:'desc',prop2:'asc']) }。同样,当尝试Groovy在多列上对Grails findAllBy查询进行排序时,第二种排序会覆盖第一列。

$

b
$ b

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

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



明显错过了后一种情况下的船,groovy分类。我已经看到过发布信息:实现可比较的,但如果可能的话,寻找更简洁的内容。 这是一个Groovy解决方案。虽然仍然基本上实现了比较器。

  list.sort {map1,map2  - > map1.rowNum< => map2.rowNum?:map1.position< => map2.position} 


Stumped on this one. In Grails it seems one cannot define a default sort on multiple columns in domain mapping a la static mapping = { sort 'prop1 desc, prop2 asc' }, or { sort([prop1:'desc', prop2:'asc']) }. Only first column gets sorted, lame.

Similarly, when trying to Groovy sort a Grails findAllBy query on multiple columns, the second sort overrides the first.

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

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

Obviously missing the boat on the latter case, the groovy sort. I have seen postings re: implementing comparable, but looking for something more concise if possible.

解决方案

Here is a Groovy solution. Still essentially implementing a Comparator though.

list.sort { map1, map2 -> map1.rowNum <=> map2.rowNum ?: map1.position <=> map2.position }

这篇关于Grails映射在多个字段排序:: Groovy在多个映射条目上排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆