2015-08-28 29 views
0

我現在面臨着一個有關排序結果從DB獲得問題冬眠。 我想按ASC排序,但我想要例外,「其他」。所以選擇「其他」將是最後的選擇。我怎樣才能實現這個? 所以,框列表會喜歡這樣的:排序,同時用特殊安排

AA 
BB 
CC 
DD 
...... 
...... 
XX 
YY 
ZZ 
Others 

代碼我想:

public List<Testing> findAll() { 
    Criteria criteria = getSession().createCriteria(Testing.class); 
    criteria.addOrder(Order.asc("TestingString")); 
    return (List<Testing>) criteria.list(); 
} 

通過使用這種編碼, 「其他」 將 「OO」 和 「PP」 之間。顯示選擇「其他」是一種不好的方式。

回答

1

與Hibernate沒有直接的方法,但你完全可以這樣做,在你的代碼。我想到了2種方法:

  1. 不要讓其他人留在數據庫中。從數據庫中檢索排序後的列表,然後在您的java代碼中手動添加Others到最後一個列表。
  2. 讓別人在DB,檢索所有按正常,甚至沒有排序,然後的調用Collections.sort(resultList,比較器),其中比較是您自定義的比較中,它比較字符串的字母順序,但總把他人作爲最大的價值。這將返回你想要的列表。
+0

我也跟着你的第一個解決方案,它的偉大工程,太感謝你了, – Jbisgood9999999

0

在hibernate上,您可以定義一個@Formula註釋字段,其中值是訂單的SQL表示形式。然後在排序中使用@Formula註釋字段。

的表達可能是

CASE columnName 
    WHEN 'Other' THEN 'zzzzzzzzzzzzzz" 
    ELSE columnName 
END