为什么以下Groovy代码段会返回
[帐号:2222和2222,帐号:1111和1111]或
[帐号:1111和1111,帐号:2222和2222]
如果你在Groovy控制台中多次运行它? 我认为sort语句导致列表的总是降序排序???
class Account {
long number
String code
String toString() {return "Account: $number and $code"}
static mapping = {
sort number:"desc"
}
}
List items = []
items << new Account(number:1111,code:'1111')
items << new Account(number:2222,code:'2222')
println items.sort()
提前致谢 多米尼克
答案 0 :(得分:1)
您未在帐户实例中定义订购。 映射指令仅适用于GORM映射类(IOW:“域对象”),并且仅在从数据库AFAIK加载类的实例时使用。
但是,您要将对象附加到普通的 List ,它不了解GORM属性。为了在这样的上下文中可靠地对 Account 实例的列表进行排序,您必须指定显式排序,例如:
class Account implements Comparable {
...
def int compareTo(rhs) {
long onum = rhs.number;
return (onum > number)? -1 : ((onum < number)? 1 : 0);
}
...
}
This article提供了有关该主题的更多信息。至于为什么Groovy在多次调用 list.sort 时对列表进行不同的排序:好吧,我不知道......
答案 1 :(得分:0)
Grails有两种主要的默认排序方式:
查询时排序:
def airports = Airport.list(sort:'name')
在该对象上放置默认排序方法:
class Airport {
…
static mapping = {
sort name:"desc"
}
}
以上摘自grails documentation。