ikeike443のブログ

ソフトウェアビジネスに関心がある系のブログ

Playframeworkでカラムに一意制約をかけるアノテーション

PlayのCRUDモジュールは、Idという名前のフィールドを持つことを規約としてますよね。

この規約を守ることによって、CRUD画面を簡単に作ることができます。

ですが、この方法だとアプリケーション的に一意でないといけない項目(例えばログインIDとかEmailアドレスとか)に一意制約をかけることが出来ません。

PlayframeworkのMLでも話題になっていて、Tomasという人がUniqueアノテーションを作って投稿していました。

これはとてもいいのですが、play.db.jpa.Modelを継承していることを前提にしているのがちょっと趣味に合わなかったので、すこし修正して下記にGistとしてアップしておきました。

Idアノテーションが付されたカラムを探し出して一意チェックをしています。
とりあえず、Idアノテーションは対象のエンティティに一つしかない前提で書いてますが。。

私はこのアノテーションと、先に挙げたパッチと、play.db.jpa.JPASupportを拡張した下記のようなクラス(これもGistにしておきました)を組み合わせて使ってます。