Ebeanでモデルのフィールドにenumを利用する場合
Ebeanでモデルのフィールドにenumを利用する場合、各enum値には、@EnumValue
アノテーションを付けると良い。
アノテーションを付けない場合、各enum値はDB上では数値の連番として保持されるが、アジャイル開発等ではenumの各値の順番が入れ替わったり、追加削除などの変更も多いため連番は扱いづらい。その場合にこのアノテーションを利用すると、各enum値をDB上でどのような値として保持するかを設定できる。
例
public enum SomeStatus {
@EnumValue("processing")
PROCESSING,
@EnumValue("success")
SUCCESS,
@EnumValue("error")
ERROR;
}
またこのアノテーションの属性として設定する値によって、生成されるSQLのカラムの型・桁数が最適なものに変化する。
上記の例だと、MySQLの場合DB上の型はvarchar(10)
となり、下記の例だと、integer
となる。
public enum SomeStatus {
@EnumValue("1")
PROCESSING,
@EnumValue("23")
SUCCESS,
@EnumValue("456")
ERROR;
}