GRAILS中的交替默认排序
为什么下面的Groovy代码段返回alternative [账户:2222和2222,账户:1111和1111]或 [账户:1111和1111,账户:2222和2222] 如果在Groovy控制台中多次运行它? 我认为sort语句会导致列表总是按降序排序GRAILS中的交替默认排序,grails,groovy,Grails,Groovy,为什么下面的Groovy代码段返回alternative [账户:2222和2222,账户:1111和1111]或 [账户:1111和1111,账户:2222和2222] 如果在Groovy控制台中多次运行它? 我认为sort语句会导致列表总是按降序排序 class Account { long number String code String toString() {return "Account: $number and $code"} static map
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()
类帐户{
长号码
字符串代码
字符串toString(){return“Account:$number和$code”}
静态映射={
排序编号:“desc”
}
}
列表项=[]
items您不定义帐户实例之间的排序。mapping指令仅适用于GORM映射类(IOW:“域对象”),并且仅在从数据库AFAIK加载类实例时使用
但是,您将对象附加到一个普通列表中,该列表不知道GORM属性。为了在这样的上下文中可靠地对帐户实例列表进行排序,您必须指定明确的顺序,例如:
class Account implements Comparable {
...
def int compareTo(rhs) {
long onum = rhs.number;
return (onum > number)? -1 : ((onum < number)? 1 : 0);
}
...
}
类帐户实现可比较{
...
def int比较器(右){
长onum=rhs.编号;
返回值(onum>编号)?-1:((onum<编号)?1:0);
}
...
}
有关于该主题的更多信息。至于为什么Groovy在多次调用list时会对列表进行不同的排序。sort:嗯,我不知道…Grails有两种主要的默认排序方式:
查询时进行排序:
def airports = Airport.list(sort:'name')
在该对象上放置默认排序方法:
class Airport {
…
static mapping = {
sort name:"desc"
}
}
以上内容摘自