我正在尝试使用mapping语句设置我的hasMany
属性的默认排序。我正在关注grails doc,但它对我不起作用(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)
...
你看到我的代码中有任何错误吗?
答案 0 :(得分:20)
可能有助于解决问题的一些事情:
Calendar
使用sendDate
属性吗?大多数情况下,人们会使用java.util.Date
。将字段类型更改为Date
是否会解决问题?我用你的映射运行了一个例子并且出错了。尝试将Message
静态mapping
关闭更改为:
static mapping = {
notes sort: 'sendDate', order: 'desc'
}
答案 1 :(得分:9)
This page告诉所有关于对象关系映射,我的应用程序遇到了类似的问题。我解决了这个问题:
class Note implements Comparable {
Calendar sendDate
static belongsTo = Message
int compareTo(obj) {
sendDate.compareTo(obj.sendDate)
}
}
和
class Message {
SortedSet notes
static hasMany = [notes: Note]
}
希望这有帮助!