2012-01-24 9 views
1

すべてがこの質問にあります、ここに私の方法です。trim(field)で注文する基準addOrder?

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 句を生成する必要があります。

そして、criteria.addOrder(new TrimOrder("orderField", true))を使用してください。