当前位置:  开发笔记 > 编程语言 > 正文

在Grails/GORM中定义默认排序顺序

如何解决《在Grails/GORM中定义默认排序顺序》经验,为你挑选了3个好方法。

假设我已经使用GORM定义了一个User对象.每个用户可以拥有零个或多个Login:s.每个登录都有一个时间戳.检索user.logins时,我希望根据login.date的值对登录进行排序.什么是正确的Grails方法来实现这一目标?

示例:我希望以下代码按升序列出所有用户的登录名.


  
    ${login.date}
  

这些是引用的类:

class User {
  ...
  def hasMany = [logins: Login]
  static fetchMode = [logins: "eager"]
}

class Login {
  Date date
  ...
  def belongsTo = [User]
}

我正在运行Grails 1.0.4,这是最新的稳定版本.



1> 小智..:

它们在参考指南(第5节)的GORM页面上展示了如何执行此操作.您想要的位于该文档底部附近的是您想要的部分.他们有两个简单的例子:

class Airport {
    …
    static mapping = {
        sort "name"
    }
}

class Airport {
    …
    static mapping = {
        sort name:"desc"
    }
}

他们还有一个关联排序的例子:

class Airport {
    …
    static hasMany = [flights:Flight]
    static mapping = {
        flights sort:'number'
    }
}


如果你想降序关联:`航班排序:'号码',顺序:'desc'`(根据http://grails.1312388.n4.nabble.com/sort-by-association-descending-td1312425.html)

2> Siegfried Pu..:

只需使Login Class实现Comparable接口:

class Login implements Comparable {

    // ...

    Date date

    public int compareTo(def other) {
        return date <=> other?.date // <=> is the compareTo operator in groovy
    }

}

并将该关系声明为SortedSet:

class User {
  ...
  def hasMany = [logins: Login]               
  SortedSet logins

  static fetchMode = [logins: "eager"]
}



3> knorv..:

在Grails 1.1中,Grails/GORM中默认排序顺序的处理似乎已经彻底简化:

Grails 1.1发行说明(搜索"默认排序顺序")

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有