2010-11-18 14 views
1

MySql関数を使用してOrder Byを使用するには、Hibernate(あらかじめCriteria APIを使用)を使用することは可能です。Hibernate - MySql関数の挿入

私が使用しているよ機能は次のとおりです。 - {別名は}

criteria.createCriteria("location.address"); 

に根ざしている

SQRT(POW(69.1 * ({alias}.latitude - 51.3814282) , 2) + POW(69.1 * ( -2.3574537 - {alias}.longitude) * COS({alias}.latitude/57.3) , 2)) 

は私がやって探していますすべては、上記の順の結果を持っていますこれまでのところ、ProjectionsオプションやOrderを使用した方法が見つかりませんでした。オプションがあり、アイディアが不足しています。

乾杯、 R

答えて

1

は、これはまさにあなたの質問に答えるが、何を基準APIから抜け出すことはそのインターフェイスに準拠素敵なオブジェクトの束ではありません。あなたはクエリから順序を解除し、代わりにそれらをメモリ内でソートすることを考えましたか?コンパレータの観点からその順序付け関数を表現するのは簡単でなければなりません。そして、単にコレクションをソートすることができます。

Criteria APIの.addOrder機能で表現する方法がわかりません。任意のSQLをRestrictionsに追加することはできますが、任意のSQLで注文できないようです。

幸運。

+0

私は探していたものではありませんが、仕事をしています。私は、データセットが大きくなるにつれてパフォーマンスが少し気になりますが、今のところメモリで並べ替えるだけでいいです:) – Rob