2010年6月19日土曜日

Grailsのprojection項目にaliasを設定する

GrailsのCriteria使ってて、「あれ、これ集計項目に対してソートかけたい場合とかどうすんだ?」という問題にひっかかった。
とりあえず調べてみたところ、Hibernateにaliasという属性があって、それを設定するとソートとか出来るようになるらしい。SQLでいうところのMAX(foo) as varみたいなもんか。
じゃあ、そいつをGrailsでやるのはどうするのか? あーでもない、こうでもないと試行錯誤した結果、結論してはどうってことない、こんだけでおkだった。

projection {
max("foo", "bar")
}


ようするにメソッドの最後の引数にエイリアス名指定してやればよかっただけという。
maxでしか試してないけど、多分他のも同じ要領で設定できると思われる。
ドキュメントにもGrails徹底入門にも載ってないから微妙に焦った。…載ってないよね?
まあ、どっかしらで使う機能だし、きっと常識なんだろうけど一応備忘録として残しておく。