MySQL имеет свой собственный ENUM тип . И, как указал @Jigar, вы можете использовать Enum.getName
, чтобы получить Java String, представляющую перечисление для персистентности, получить поле из базы данных в виде String и использовать Enum.valueOf
, чтобы загрузить константу enum обратно.
Вы также можете использовать Enum.ordinal() + 1
, чтобы получить целое число для персистентности (MySQL также поддерживает использование целочисленных индексов напрямую с типом ENUM) и выполнить запрос, подобный:
SELECT enum_col-1 FROM tbl_name;
для получения порядкового номера возврата (он получит -1 для строк с недопустимыми значениями enum).
Plus MyEnumType value = MyEnumType.values()[ordinal]
для преобразования его в тип перечисления Java.
В любом случае, я думаю, что решение на основе String является более чистым и элегантным, а также более безопасным в долгосрочной перспективе (если вам когда-либо понадобится изменить порядок перечисления java или добавить новые значения перечисления в середине существующих , вы поблагодарите себя за то, что начали с стратегии, основанной на String).