PostgreSQLのソート時にCOLLATIONを指定する

PostgreSQLで日本語文字列を含むカラムでソートする際に、設定によっては狙った結果と異なる順序になってしまう場合がある。

-- COLLATIONを指定しない場合
select * from customer order by furigana asc

その場合は、COLLATE句を使用して照合順序を指定できる。

-- COLLATIONを指定する場合
select * from customer order by furigana collate "ja_JP" asc

EbeanでCOLLATIONを指定する場合は以下のようにasc()またはdesc()メソッドの第二引数として指定すれば良い。
ただしバージョンによっては生成されるSQLにダブルクォートがつかない場合があるため、自身でダブルクォートで囲む必要があることに注意。

Ebean.find(Customer.class).query()
    .order().asc("furigana", "\"ja_JP\"")
    .findList();