Spring Data JPAでのOrderBy
Spring Data JPAでエンティティクラスにfindして複数のレコードを取得する場合、OrderByをつければ並び順を変更できることはご存知でしょうか?
findByNameOrderById(Spring name)
などとすれば、nameで絞り込んだ上で、idの降順で並び替えができます。
これを見る限り、後ろにOrderByを入れればいいんだな、と思ってしまいがちですが、以下のような書き方だとエラーが発生してしまいます。
findAllOrderById()
これだとコンパイルのタイミングで、
No property desc found for type Integer! Traversed path
のようなエラーメッセージが出力されるのです。
whereを指定しない場合、OrderByの前にByが必要
上記のfindAllの例のように、where句の絞り込みをしない場合、OrderByの前にもByが必要になります。
よって、findAllの場合は以下のようにしなければいけません。
findAllByOrderById()
SQLの書き方に慣れていると、order byの前にbyを付けているようで少し気持ち悪いですよね。
今回はfindAllの例でしたが、この書き方はfindFirstやfindTopの場合なども同様です。
findFirst1ByOrderById() findTopByOrderById()
今まで条件を指定しないとOrderByが使えないのでは?と思われていた方がいたら、ぜひ参考にしてください。
Fire TV Stick 4K - Alexa対応音声認識リモコン付属
- 発売日: 2018/12/12
- メディア: エレクトロニクス
Fire HD 10 タブレット (10インチHDディスプレイ) 64GB - Alexa搭載
- 発売日: 2017/10/11
- メディア: エレクトロニクス