проблема сортировки с несколькими объединениями - PullRequest
2 голосов
/ 01 июля 2010

У меня проблема с получением сортировки для работы с несколькими объединенными таблицами.Например:

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.subscription вызывается сгенерированными заказами запросов magazine.id.Есть ли способ получить заказ по magazine.name?Я попытался перейти на сортировку подписок: 'magazine.name', но получил сообщение об ошибке: такого свойства нет.

После: http://grails.org/doc/latest/guide/single.html#5.5.3 Порядок сортировки по умолчанию Я попытался переместить сортировку на уровень ассоциации, удалив сортировкуиз учетной записи и сохраняя сортировку только в подписке, но в результате мы полностью удалили "order by" из полученного запроса.Есть идеи?Спасибо.

1 Ответ

1 голос
/ 01 июля 2010

Попробуйте реализовать метод 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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...