Grails | Groovy | Create Criteria | Hibernate Criteria Builder | Custom Criteria Order | Custom Sort By | Custom Order Criteria.
In Grails we may need sometime to add sort / order by with some aggregate function as sum of two fields. Suppose we have a Grails / Groovy domain which has two field named "amount" and "tax", now we want to sort by sum of these two fields. So we can do that using below sample code:
In Grails we may need sometime to add sort / order by with some aggregate function as sum of two fields. Suppose we have a Grails / Groovy domain which has two field named "amount" and "tax", now we want to sort by sum of these two fields. So we can do that using below sample code:
import groovy.lang.Closure import org.hibernate.Criteria import org.hibernate.HibernateException import org.hibernate.criterion.CriteriaQuery import org.hibernate.criterion.Order as CriterionOrder Closure closure = { addOrder(new CriterionOrder("amount", params.dir) { @Override String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return "(this_.amount + this_.tax) asc" } }) projections { property("id") property("amount") } } List list = Domain.createCriteria().list { and closure }
Good one
ReplyDelete