Отображение типов перечислений с помощью Hibernate Annotations - PullRequest
36 голосов
/ 03 апреля 2010

У меня есть тип enum в моей модели Java, который я хотел бы отобразить в таблицу в базе данных. Я работаю с Hibernate Annotations и не знаю, как это сделать. Поскольку ответы, которые я ищу, были довольно стары, мне интересно, какой путь лучше?

Заранее спасибо

1 Ответ

66 голосов
/ 03 апреля 2010

Вам нужно что-то еще, кроме аннотации @Enumerated? Например, следующее перечисление:

public enum MyEnum { 
    VALUE1, VALUE2; 
}  

Может использоваться и аннотироваться так:

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

Вы можете указать, как перечисление должно сохраняться в базе данных с помощью свойства EnumType enum аннотации @Enumerated. EnumType.ORDINAL указывает, что перечисление будет сохранено как целочисленное значение. Здесь myEnum, установленный на VALUE1, будет сохранен как 0, VALUE2 как 1 и т. Д.

В качестве альтернативы можно использовать EnumType.STRING, чтобы указать, что перечисление будет сохраняться с использованием имени значения перечисления, для которого установлено поле. Таким образом, применительно к предыдущему примеру установка поля myEnum в MyEnum.VALUE1 будет сохраняться как VALUE1 и т. Д.

...