Screaming Loud

研究・プログラミングなど気づいたことをメモをしています。読書記録はこちらに記載しています。https://bookmeter.com/users/75944

slickのupdateで動的にクエリを作れなくてハマった

slickでは、SQLを書かずにクエリを投げられます。

その書き方に関しては、
Coming from SQL to Slick — Slick 2.1.0 documentationに書いてあります。

ただ、少し違ったことをしようとするとなかなか実現できません。

今回実現しようとしていたこと

update文でcase classに値が入っているカラムだけ更新

実装

何も考えずに実装すると、下記のようになると思います。

ただ、このままだとcase classに値を埋めていないと、
埋めていないカラムがnullで更新されてしまいます。

解決策

これを解決するために、以下のような実装をしました。

Javaのリフレクションを使ってかなり強引ですが、
一応やりたかったことは実現できました。

ただ、型チェックもなかったりであまりおすすめではありません。

slickの思想として、DAOレイヤーでゴニョゴニョしないで、ロジックでcase classを操作しろってことなんでしょうか?

他にいい方法はあれば、教えてください!

広告を非表示にする