Webシステムははステートレスなので更新衝突検知は更新日時とかでやるしかないわけで。
今使ってるDAOには検知機能があるっぽいので使ってみる。更新日時にNULLが入ってるケースで失敗。ライブラリをデコンパイルしてみると、
if (detectCollision) { sql.append(columnName).append("=?"); }
みたいな。NULLだと「updated_at = NULL」みたいな条件になっちゃってよろしくない。つか、PreparedStatementが「updated_at = ?」を「updated_at IS NULL」みたいにしてくれると嬉しかったんだが。
んじゃ、そこんとこでnull判定して条件作っちゃえばいいじゃん、って思ったが、自社製ライブラリのくせして、ソースもないし、いじっちゃだめっぽい。そこだけフックできるような書き方も当然していない。
結局、下位クラスでそこのメソッドをまるまるオーバーライドする羽目に。100行ほどコピペして数行を修正。これをDAOごとにやらなければならない。
あほらしすぎる。