slickでは、SQLを書かずにクエリを投げられます。
その書き方に関しては、
Coming from SQL to Slick — Slick 2.1.0 documentationに書いてあります。
ただ、少し違ったことをしようとするとなかなか実現できません。
今回実現しようとしていたこと
update文でcase classに値が入っているカラムだけ更新
実装
何も考えずに実装すると、下記のようになると思います。
ただ、このままだとcase classに値を埋めていないと、
埋めていないカラムがnullで更新されてしまいます。
解決策
これを解決するために、以下のような実装をしました。
Javaのリフレクションを使ってかなり強引ですが、
一応やりたかったことは実現できました。
ただ、型チェックもなかったりであまりおすすめではありません。
slickの思想として、DAOレイヤーでゴニョゴニョしないで、ロジックでcase classを操作しろってことなんでしょうか?
他にいい方法はあれば、教えてください!