Play Frameworkで最新のplay-ebeanモジュールを使用する際の注意
Play Framework 2.8とplay-ebean
モジュールの6.2.0-RC4
以降のバージョンを使用する場合、破壊的な変更があるため注意。
参考 play-ebean 6.2.0-RC4(https://github.com/playframework/play-ebean/releases/tag/6.2.0-RC4)
play-ebean
モジュールの6.2.0-RC4
以降のバージョンではPlay enhancer
の同梱が削除された。
6.2.0-RC4
より前のバージョンでは、モデルクラスのフィールドがpublicとなっていた場合、直接フィールドを書き換えてからinsert()
メソッドやupdate()
メソッドで登録・更新が可能であったが、6.2.0-RC4
以降はこの動作ができなくなる。
実際の挙動とすると、insert()
メソッドを呼び出したときは値を設定したフィールドが問題なく登録されるのだが、update()
メソッドを呼び出した時にはフィールドの変更があったとしても変更された判定とならず、そもそもUPDATE文のSQLが実行されない。
markAsDirty()
メソッドを呼んで強制的にUPDATE文を実行させようとしても、そもそも更新日時の列とバージョンの列しか更新されないという挙動となってしまう。
6.2.0-RC4
以降では、モデルのフィールドは全てprivateとし、getter・setterのメソッドを自前で作成しそれを使用する必要がある。
setter経由で値を更新すれば、問題なくUPDATE文が実行される。
getter・setterを自前で作成するのが面倒な場合は、Lombok
を併用することでこの手間を軽減することができる。