Существует два типа EnumType: как EnumType.ORDINAL
и как EnumType.STRING
.Однако оба имеют недостатки:
EnumType.ORDINAL: You must preserve the enum order.
EnumType.STRING: The column width is the max length of the enum names, which maybe very long.
Вместо этого я хотел бы ввести сокращение для типа enum:
public Enum MonthEnum {
January("JAN"),
February("FEB"),
March("MAR"),
...;
String abbrev;
static Map<String, MonthEnum> abbrevs = new HashMap();
MonthEnum(String abbrev) {
this.abbrev = abbrev;
abbrevs.put(abbrev, this);
}
public static MonthEnum fromAbbrev(String abbrev) {
return abbrevs.get(abbrev);
}
}
@Entity
class Diary {
@Enumerated(ABBREV)
Month month;
}