У меня есть перечисление в классе, отображаемое Hibernate. Одно из отображаемых полей - это тип перечисления и, имеющий одно из следующих значений OK , NOK или NAP . NOK или NAP работает должным образом,но когда для поля класса установлено значение «ОК», Hibernate не может сопоставить и получить значение, для которого установлено значение null:
java.lang.IllegalArgumentException: Unknown name value for enum class com.a.b.c.d.Class$Status: OK
at org.hibernate.type.EnumType.nullSafeGet(EnumType.java:113)
Класс имеет:
private Status status;
@JoinColumn(name = "STATUS")
@Enumerated(EnumType.STRING)
public Status getStatus() {
return status;
}
public enum Status {
OK, NOK, NAP;
}
Если я изменю OK на ОК2 , работает исправно. _OK тоже работает. Насколько я понимаю, «ОК» не является зарезервированным именем (как в этом случае, когда парень использует new ), поскольку оно компилируется правильно.
Спасибо!
ОБНОВЛЕНИЕ:
До сих пор для решения проблемы я изменял перечисление и сохранял в базе данных « _OK » вместо «» OK ', как показано выше. Не очень хорошее решение, но оно, по крайней мере, работает.
public enum Status {
_OK("OK"),
NOK("NOK"),
NAP("NAP");
private String desc;
private Status(String desc){
this.desc = desc;
}
public String getDesc(){
return desc;
}
}
ОТЧЕТ ОБ ОШИБКЕ:
Отчет об ошибке был заполнен .