Reputation: 193
I'm trying to set default sort of my hasMany
attribute using mapping statement. I'm following the grails doc but it doesn't work for me (grails 1.3.5). My code looks like:
class Note {
Calendar sendDate
static belongsTo = Message
}
class Message {
static hasMany = [notes: Note]
static mapping = {
notes sort:'sendDate desc'
}
}
The error message looks like:
...
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)
...
Do you see any mistakes in my code?
Upvotes: 16
Views: 13801
Reputation: 2003
This page tells all about Object Relational Mapping, I had a similar problem with my app. I solved it like so:
class Note implements Comparable {
Calendar sendDate
static belongsTo = Message
int compareTo(obj) {
sendDate.compareTo(obj.sendDate)
}
}
and
class Message {
SortedSet notes
static hasMany = [notes: Note]
}
Hope this helpes!
Upvotes: 11
Reputation: 120286
A couple things that may help fix the problem:
Calendar
for the sendDate
property? Most of the time, one would use a java.util.Date
. Does changing the field type to a Date
fix the issue?I ran an example with your mappings and got an error. Try changing your Message
static mapping
closure to this:
static mapping = {
notes sort: 'sendDate', order: 'desc'
}
Upvotes: 21