web-dev-qa-db-ja.com

Hibernate Annotationsによる列挙型のマッピング

Javaモデルに列挙型があり、これをデータベースのテーブルにマッピングしたい。HibernateAnnotationsを使用しており、その方法がわからない。私が検索する答えはかなり古いので、どちらの方法が最適なのだろうか?

前もって感謝します

36
Thiago

@Enumerated アノテーション以外のものが必要ですか?たとえば、次の列挙型:

public enum MyEnum { 
    VALUE1, VALUE2; 
}  

次のように使用して注釈を付けることができます。

private MyEnum myEnum;
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
}

@EnumeratedアノテーションのEnumType enumプロパティを使用して、データベースで列挙を永続化する方法を指定できます。 EnumType.ORDINALは、列挙が整数値として保持されることを指定します。ここで、VALUE1に設定されたmyEnumは0、VALUE2は1などとして保持されます。

別の方法は、EnumType.STRINGを使用して、フィールドに設定されている列挙値の名前を使用して列挙が永続化されるように指定することです。したがって、前の例に適用すると、フィールドmyEnumMyEnum.VALUE1に設定すると、VALUE1などとして保持されます。

67
Pascal Thivent