Hibernateを使って、Oracleで日本語順でソートしたかったので調べてみた。
NLSSORT関数を使用する。
HQL的には下記のように書くと良い。
public List<Cat> findOrderByJapanese() {
String query = "from Cat cat"
+ " where cat.typeName = 'mikeneko'"
+ " order by nlssort(cat.name, 'NLS_SORT=JAPANESE')"; // 日本語順でソートする。
return (List<cat>) getHibernateTemplate().find(query);
}
以上
参考サイト
Oracle Database グローバリゼーション・サポート・ガイド「5 言語ソートと文字列検索」
Hibernate oracle text field in alphabetical order