grails - GRAILS中的替代默认排序

标签 grails groovy

为什么以下Groovy代码段交替返回
[帐户:2222和2222,帐户:1111和1111]或
[帐户:1111和1111,帐户:2222和2222]
如果您在Groovy Console中多次运行它?
我以为sort语句导致列表的ALWAYS降序排序?

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()

提前致谢
多米尼克

最佳答案

您没有在Account实例之间定义顺序。映射伪指令仅适用于GORM映射的类(IOW:“域对象”),并且仅在从数据库AFAIK加载类的实例时使用。

但是,您将对象附加到一个普通列表,该列表不了解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时对列表进行不同的排序:好吧,我不知道...

关于grails - GRAILS中的替代默认排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1209761/

相关文章:

mysql - 通过 grails 应用程序中的网络表单提交特殊字符,例如 "š č ć đ ž"

grails - grails-afterDelete()访问域属性

java - 定期付款库 - Java 或 Groovy

java - 让我的scrollPane在程序控制下滚动

grails - 如何从 Groovy 中的 List<List> 中提取列表

hibernate - 如何在 grails 脚本中建立 Hibernate session

html - 如何在 Groovy/Geb 中一个一个地点击复选框?

grails - grails <f:field> tabindex

grails - 没有重定向的Grails调用函数

mongodb - 由于 grails-datastore-gorm-plugin-support :jar:3. 1.3.BUILD-SNAPSHOT,Hudson 中的构建失败不一致