grails - 多个联接的排序问题

标签 grails groovy

我在排序以与多个联接表一起使用时遇到问题。例如:

class Account {

  static hasMany = [subscriptions: Subscription]

  static mapping = {
    subscriptions fetch: 'join'
    subscriptions sort: 'magazine'
  }

}

class Subscription {

  static belongsTo = [account:Account, magazine: Magazine]

  static maping = {
    magazine fetch: 'join'
    magazine sort: 'name'
  }

}

class Magazine {
  String name  
  static mapping = {
    sort name: 'desc'
  }
}

当someAccount.subscriptions称为通过magazine.id生成的查询顺序时。有什么方法可以通过magazine.name获取订单吗?我尝试更改为订阅排序:“magazine.name”,但出现错误,没有此类属性。

以下:http://grails.org/doc/latest/guide/single.html#5.5.3默认排序顺序我试图通过从“帐户”中删除排序并仅保留“订阅”中的排序来将排序移到关联级别,但最终从结果查询中完全删除了“排序依据”。有任何想法吗?谢谢。

最佳答案

尝试在Magazine类中实现compareTo方法:

class Magazine implements Comparable {
  String name  

  int compareTo(obj) {
      name.compareTo(obj.name)
  }
}

然后订阅中的一个
class Subscription implements Comparable {

    static belongsTo = [account:Account, magazine:Magazine]
    static constraints = {
    }
    int compareTo(obj) {
       return magazine.compareTo(obj.magazine)
    }
}

然后将订阅设为“帐户中的SortedSet”:
class Account {
    SortedSet subscriptions
    static hasMany = [subscriptions:Subscription]
}

关于grails - 多个联接的排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152963/

相关文章:

groovy - Groovy 中按自然顺序对列表进行排序

session - 将 session 值从 Controller 传递到src/groovy类

java - 将 jar 添加到 artifatory.m2/repository 后,maven 构建失败,不包含 jar 文件

grails - GORM-将3个查询更改为1个(或至少2个)

grails - 通过远程或其他服务器访问时,Grails重定向不起作用

java - HTTP Builder/Groovy - 丢失 302(重定向)处理?

将 json 转换为 CSV 文件的 Groovy 代码

grails - Grails中的CommonsMultipartFile

ide - Grails 1.1.X 开发的最佳 IDE

groovy - 使用 XmlSlurper 和 findAll 的嵌套 GPath 表达式