finally i found solution for this.
i created a custom class to override the criteria formula.
public class customOrderBy extends Order { private String sqlFormula; protected OrderBySqlFormula(String sqlFormula) { super(sqlFormula, true); this.sqlFormula = sqlFormula; } public String toString() { return sqlFormula; } public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return sqlFormula; } public static Order customOrder(String sqlFormula) { return new OrderBySqlFormula(sqlFormula); } }
And i called this as below
criteria.addOrder(customOrderBy.customOrder("IIF(StudentType = 'O',StudentName,SchoolName)"));