Search code examples
grailsgrails-orm

Grails - Sort by two fields in a query


I Have Such a domain class in my project:

class Log  {

Integer entityId
Integer tableId
Date logDt
}

I would like to select all the records by a certain tableId, and sort them by entityId and logDt desc. Sorting by one filed works fine:

Log.findAllByTableId(tableID, [sort: 'entityId', order: 'desc'])

but when I try to sort by both fields:

Log.findAllByTableId(tableID, [sort: 'entityId,logDt', order: 'desc'])

I get an error that there is no such field 'entityId,logDt' at this table.

What is the right syntax to do so?

Thanks.


Solution

  • Using the dynamic finders, you just can sort by one property.

    If you would like to sort by multiple properties you could use a criteria or a HQL query.

    Here is an example using a criteria:

    def logs = Log.createCriteria().list {
        eq('tableId', tableID)
        order('entityId', 'desc')
        order('logDt', 'desc')
    }