ルーズリーフ

公私におよぶ経験値獲得履歴的ななにか。

Ebean.update()で更新されないカラムが発生

環境
  • Play 2.2 Java
  • MySQL 5.6
  • Java 1.7
    (原因からみるとあんまり関係ないだろうけど一応)
症状
  • 不規則に更新出来たり出来なかったりする項目がある。
    • 再現性はあった。(でも変更前のレコードの状態が違うと別の項目が更新出来なくなる不思議~)
  • Exceptionは発生しない。ちゃんと更新出来ている項目もある。
結論
  • 一部で、setter(user.setName(name))ではなく、代入(user.name = name)で値を入れようとした事が原因。
  • どうやらPlay-Ebean間のオブジェクトごにょごにょ中に、代入だと落ちるっぽい。(※時間があったら調べる)

↓原因特定の助けになったStackOverFlow記事。
playframework - EBean is not doing updates! it's trying to do inserts and failing - Stack Overflow

ほんと日々の困った!はGoogle先生とStackOverFlow様様ですね。

まぁ私としては、そもそもModelクラスのフィールド変数が public だったことがこのトラブルの元凶だったねごめんね!!って感じです。
書き手が違うとこういうことがあるのかなるほど、体験をしてしまった。
よく見かけるEbeanのサンプルだとpublicなので、何も考えずにそうしてましたが、ちゃんとprivateにしましょうごめんなさいでした。