Grails по умолчанию сортирует атрибуты домена "hasMany" - PullRequest
14 голосов
/ 12 ноября 2010

Я пытаюсь установить сортировку по умолчанию для моего атрибута hasMany, используя оператор отображения. Я следую за документом Grails, но он не работает для меня (Grails 1.3.5). Мой код выглядит так:

class Note {
    Calendar    sendDate
    static belongsTo = Message
}

class Message {
    static  hasMany = [notes: Note]
    static mapping = {
        notes sort:'sendDate desc'
    }
}

Сообщение об ошибке выглядит так:

...
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'notes0_.sendDate' in 'order clause'
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
        at com.mysql.jdbc.Util.getInstance(Util.java:384)
...

Вы видите ошибки в моем коде?

Ответы [ 2 ]

20 голосов
/ 12 ноября 2010

Пара вещей, которые могут помочь решить проблему:

  • Вам действительно нужно использовать Calendar для свойства sendDate? Большую часть времени можно было бы использовать java.util.Date. Устраняет ли проблему изменение типа поля на Date?
  • Я запустил пример с вашими сопоставлениями и получил ошибку. Попробуйте изменить Message static mapping замыкание на это:

    static mapping = {
        notes sort: 'sendDate', order: 'desc'
    }
    
9 голосов
/ 10 марта 2011

Эта страница рассказывает все об объектно-реляционном сопоставлении, у меня была похожая проблема с моим приложением.Я решил это так:

class Note implements Comparable {
  Calendar sendDate
  static belongsTo = Message

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

и

class Message {
  SortedSet notes
  static  hasMany = [notes: Note]
}

Надеюсь, это поможет!

...