Baltius
Baltius

Reputation: 48

Criteria addOrder to order by trim(field)?

All is in this question, here is my method.

public List<Object> listEntry(final int rowNumMin, final int maxResult,
    final String orderField, final int orderSort) {

    final Criteria requete = getSession().createCriteria(
            getPersistentClass());
    if(orderSort=1){
        requete.addOrder(Order.asc(orderField));
    } else {
        requete.addOrder(Order.desc(orderField));
    }
    requete.setMaxResults(maxResult);
    requete.setFirstResult(rowNumMin);
    final List<Object> resultat = requete.list();
    return resultat;
}

This is like

SELECT * FROM myTable ORDER BY orderField LIMIT rowNumMin, maxResult;

but I would like to obtain

SELECT * FROM myTable ORDER BY TRIM(orderField) LIMIT rowNumMin, maxResult;

How can I do this ?

Upvotes: 1

Views: 1995

Answers (1)

JB Nizet
JB Nizet

Reputation: 692073

You'll have to create a custom subclass of org.hibernate.criterion.Order, and override the toSqlString method to generate the SQL order by clause you want.

And then use criteria.addOrder(new TrimOrder("orderField", true)).

Upvotes: 1

Related Questions