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 в столбец с одним символом?
Спасибо.