Defining default sort-order in Grails/GORM
23,235
Solution 1
The handling of default sort order in Grails/GORM seems to have been radically simplified in Grails 1.1:
- Grails 1.1 release notes (search for "Default Sort Order")
Solution 2
Just make the Login Class implement the Comparable interface:
class Login implements Comparable {
// ...
Date date
public int compareTo(def other) {
return date <=> other?.date // <=> is the compareTo operator in groovy
}
}
and declare the relation to be a SortedSet:
class User {
...
def hasMany = [logins: Login]
SortedSet logins
static fetchMode = [logins: "eager"]
}
Author by
knorv
Updated on September 04, 2020Comments
-
knorv over 3 years
Let's say I have definied a User object using GORM. Each user can have zero or more Login:s. Each Login has a timestamp. When retrieving user.logins I want the logins to be sorted based on the value of login.date. What is the correct Grails way to achieve this?
Example: I want the following code to list all the user's logins in ascending order.
<g:each var="login" in="${user.logins}"> <tr> <td>${login.date}</td> </tr> </g:each>
These are the referenced classes:
class User { ... def hasMany = [logins: Login] static fetchMode = [logins: "eager"] } class Login { Date date ... def belongsTo = [User] }
I'm running Grails 1.0.4 which is the latest stable release.