标准addOrder按trim(字段)排序?

时间:2012-01-24 13:53:11

标签: hibernate criteria

一切都在这个问题中,这是我的方法。

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;
}

这就像

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

但我想获得

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您必须创建org.hibernate.criterion.Order的自定义子类,并覆盖toSqlString方法以生成所需的SQL order by子句。

然后使用criteria.addOrder(new TrimOrder("orderField", true))