Each field that you use in aggregate queries (the one that uses projections ) must be either groupProperty , or just an argument to an aggregate function (that is, in projections anyway). In this example, try
Participation.createCriteria().list{ createAlias("status","statusAlias") order "statusAlias.creationDate" projections{ groupProperty "id" groupProperty "statusAlias.creationDate" } }
source share