親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Spring Data JPA のfind+OrderByで、No property desc foundエラー時の対処法


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

Fire TV Stick

  • 発売日: 2017/04/06
  • メディア: エレクトロニクス
Fire TV Stick 4K - Alexa対応音声認識リモコン付属

Fire TV Stick 4K - Alexa対応音声認識リモコン付属

  • 発売日: 2018/12/12
  • メディア: エレクトロニクス
Fire HD 10 タブレット (10インチHDディスプレイ) 64GB - Alexa搭載

Fire HD 10 タブレット (10インチHDディスプレイ) 64GB - Alexa搭載

  • 発売日: 2017/10/11
  • メディア: エレクトロニクス