Hibernate предоставляет аннотацию @Enumerated
, которая поддерживает два типа отображения Enum
либо с использованием ORDINAL
, либо STRING
. Когда мы на карте используем EnumType.STRING
, оно принимает "имя" Enum
, а не toString()
представления Enum. Это проблема в сценариях, где столбец базы данных состоит только из одного символа. Например, у меня есть следующий Enum:
public enum Status{
OPEN{
@Override
public String toString(){
return "O";}
},
WAITLIST{
@Override
public String toString(){
return "W";}
},
COMPLETE{
@Override
public String toString(){
return "C";}
}
}
Когда я сохраняю перечисление Status.OPEN
с помощью @Enumerated(EnumType.STRING)
, значение, которое Hibernate пытается сохранить в базе данных, ОТКРЫТО. Однако мой столбец базы данных состоит только из одного символа и, следовательно, генерирует исключение.
Один из способов преодоления этой проблемы - изменить тип Enum для хранения отдельных символов (например, STATUS.O
, STATUS.W
вместо Status.OPEN
, STATUS.WAITLIST
). Однако это снижает читаемость. Любые предложения по сохранению читаемости, а также отображение Enum в столбец с одним символом?
Спасибо.