Grails по умолчанию сортирует атрибуты домена hasMany
Я пытаюсь установить по умолчанию свой атрибут 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)
...
Вы видите ошибки в моем коде?
Ответы
Ответ 1
Пара вопросов, которые могут помочь устранить проблему:
- Вам действительно нужно использовать
Calendar
для свойства sendDate
? Большую часть времени можно использовать java.util.Date
. Изменяет ли тип поля на Date
проблему?
-
Я привел пример с вашими сопоставлениями и получил ошибку. Попробуйте изменить Message
static mapping
замыкание на это:
static mapping = {
notes sort: 'sendDate', order: 'desc'
}
Ответ 2
Эта страница рассказывает о объектной реляционной картографии, у меня была аналогичная проблема с моим приложением. Я решил это так:
class Note implements Comparable {
Calendar sendDate
static belongsTo = Message
int compareTo(obj) {
sendDate.compareTo(obj.sendDate)
}
}
и
class Message {
SortedSet notes
static hasMany = [notes: Note]
}
Надеюсь, что эта помощь!