ヘボいミスで、
Hoge entity = Beans.createAndCopy(Hoge.class, hogeForm).execute();
hogeService.update(entity);
というロジックでやってた。
今のシステムは開発がどんどん進んでいるので、
いつの間にか、formとentityのプロパティが完全に一致しなくなってた。
そんな状態で上記のロジックが動作すると、formに無いプロパティはnullなentityが生成されてしまう。
DBでnot null属性ならばエラーで気づくことができるけど、そうでない時は意図しない値がnullで更新されてしまう。
updateByIncludesや、updateByExcludesで更新プロパティの指定をやってたのだけど、
DBの項目が増えて行くたびに、その辺りのつじつまもいつの間にかズレていた。
ということで、更新時のBeans.createAndCopyを廃止して、以下の様に書きなおした。
Hoge entity = hogeService.findById(hogeForm.id);
Beans.copy(hogeForm, entity).execute();
hogeService.update(entity);
一度、DBよりentityを取得して、formにあるプロパティだけ上書きするという感じ。
これでformとentityのプロパティが一致してなくとも、意図しない値がnullになることはない。
※formのプロパティがnullになってた場合などは仕方なし。。。
まあ、これで様子見てみる。