У меня есть перечисление в классе, составленное Hibernate. Одним из сопоставленных полей является тип enum, который имеет одно из следующих значений OK , NOK или NAP . NOK или NAP работает должным образом, но когда для поля установлен класс 'OK', 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 на OK2 , он будет работать правильно. _OK также работает.
Насколько я понимаю, «ОК» не является зарезервированным именем (как в этом случае, когда парень использует new ), поскольку оно компилируется правильно.
Спасибо!
UPDATE:
Up 'до сих пор, что я делал, чтобы решить проблему, изменив enum и сохранив' _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;
}
}
Сообщение об ошибке:
A Отчет об ошибке заполнен .