Являются ли перечисления, поддерживаемые JDBC?
Я действительно не могу найти хороший пример отображения JDBC перечисления.
Действительно ли enum поддерживается JDBC?
Я работаю с MySQL. У меня есть столбец перечисления, и я хотел бы сопоставить некоторые перечисления Java.
Ответы
Ответ 1
JDBC не поддерживает перечисления.
Вы можете преобразовать строку в перечисление, хотя, поэтому, если у вас есть перечисление Java, вы можете сделать что-то вроде
MyEnum enumVal = MyEnum.valueOf(rs.getString("EnumColumn"));
Однако вам нужно будет поддерживать пересылку java и mysql enum. MyEnum.valueOf() может вызывать IllegalArgumentException, если нет отображения из строки или NullPointerException, если вы получаете нулевое значение из db.
Ответ 2
Вот некоторое общее решение, которое использовалось при преобразовании значений JDBC в перечисления Java.
param = Enum.valueOf((Class<? extends Enum>)dbField.getField().getType(), (String) param);
где param - значение поля в db, а dbField - это java.reflect.util.Field, где значение