Open1

「DomaNullPointerException: [DOMA0001] The parameter "***" is null」 への対応

ふじしろふじしろ

DOMAについて

https://doma.readthedocs.io/en/latest/

概要

  1. PostmanからGETリクエスト
  2. タイトルのエラーにより500エラーになる。
  3. 色々やってみる
    1. 記載のパラメータがnullであると怒られているので、?を付してnull許容にする:変わらず
    2. SQL文から一旦sort関係の処理を外してみる:変わらず
    3. sortに値を入れてリクエストしてみる:PostmanがSending request...になったまま止まる。ログを見てみるとDOMA2220が発生したままストップしている
  4. 解決せず
  5. DOMAのエラーなのでDOMAに渡すタイミングでNull許容にする必要がありそう。
  6. パラメータをnull許容するにはどうすればいい?
  7. DaoImpleの自動生成コードからnull許容は断念
  8. null許容をなくして、値が必ず届くように修正
  9. DOMA0001解消!
  10. しかしDOMA2220によりPostmanがSending request...になったまま止まる。
  11. ここについてはorder by句を活用していた時に、バインドしたい変数とordre by というワードを分けずに一緒の変数に入れ、さらに埋め込み変数コメントを活用したところ解消した
    12. 修正前:order by /* sort */sortの中身がid asc
    13. 修正後;/*# sort */sortの中身がorder by id asc

DomaNullPointerExceptionとは

null でないことを期待されたパラメータへの引数が null の場合にスローされる例外です。

https://doma.seasar.org/apidocs/org/seasar/doma/DomaNullPointerException.html

開発者の方によると
https://taedium.hatenadiary.org/entry/20100220/p1

エラーコードDOMA0001の意味

The parameter \"{0}\" is nullなのでDomaNullPointerExceptionの意味と同じ。