2012-01-24 35 views
1

所有在這個問題,這裏是我的方法。標準addOrder按trim(字段)排序?

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

您必須創建org.hibernate.criterion.Order的自定義子類,並覆蓋toSqlString方法以生成所需的SQL order by子句。

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