2013年2月20日水曜日

@Enumerated

JPA に @Enumerated というアノテーションがあるのですが、今日はこの子にがっかりさせられました。

    @Enumerated(EnumType.ORDINAL)
    private HogeEnum hoge = HogeEnum.OFF;

とかするわけなんですが、これだとこちらにあるとおり、列挙型を定義した順に、0,1,2 の順の値しか持てないんですね。(当たり前といえば当たり前なのかもしれないけど・・・・)
http://tomee.apache.org/examples-trunk/jpa-enumerated/

仕方ないので、EnumType.STRING としとくと、上記の例だと「OFF」という文字列が入ります。列挙型に定義する順序は重要だと思うので、こちらのほうがいくらかマシですね・・・・