JPA не может сопоставить вашу строку с enum, поскольку он не может найти никакого перечисления с таким именем.
Внутри @Enumerated используется метод Enum.valueOf
для преобразования строки БД в константу перечисления. Строка DB должна точно соответствовать идентификатору константы перечисления.
То есть, если вы хотите сохранить DataEnum.ReleaseContent
, вы должны сохранить его как ReleaseContent
, а не Release content
.
В вашем случае, если вы хотите сохранить значение, отличное от идентификатора enum, вы можете объявить пользовательский конвертер:
@Converter
public class DataEnumConverter implements AttributeConverter<DataEnum, String> {
@Override
public String convertToDatabaseColumn(DataEnum enum) {
// Convert your enum to DB value
}
@Override
public DataEnum convertToEntityAttribute(String dbValue) {
// Convert String to your enum
}
}
Вы можете увидеть Мой ответ для примера, как преобразовать String в enum
А в вашей сущности:
@Column
@Convert(converter = DataEnumConverter.class)
private DataEnum sheet;