I have two domain classes with 1:n relationship:
import Action
class Task {
Action actionParent
String taskName
}
and
class Action {
String actionName
}
I have the list of Tasks where I have the column "Action name", I would like to sort this column by Action.actionName. Now I'm using the createCriteria() method [I need to use it because I have more logic for filtering and sorting...], but I'm able to sort only by "Action.id". This method looks like:
def criteria = Task.createCriteria();
taskList = criteria.list {
if(parameters.max != null)
maxResults(parameters.max)
if(parameters.offset != null)
firstResult(new Integer(parameters.offset))
if(parameters.sort != null && parameters.order)
order(parameters.sort, parameters.order)
}
Is there any way to sort the domain class data by the relationship attributes?
Thanks for any replay,
Mateo
Have you tried using the listOrderBy* GORM command, so it would be something like
try this
you can also do this
I know this is an old question, but in my particular situation (wanting to sort on an association's association's field), it worked only when I passed the sort column directly into the list method:
When I tried to put the ordering information in the closure itself, Hibernate barfed up an exception with a message
org.hibernate.QueryException: could not resolve property: [Grails domain relation's relation's field] of: [Grails domain]
.if you want to stick with the criteria approach, try something like this. Create an alias to you Action object and then access the property for sorting it