Я бы сказал, что в этом подходе есть неверное представление:
Сущности представляют объекты, которые могут храниться в базе данных.В этом случае база данных (или любое другое постоянное хранилище) определяет, какие экземпляры доступны.
Перечисления представляют собой фиксированный набор констант, определенных в исходном коде.Таким образом, сам класс определяет, какие константы доступны.Кроме того, в общем случае плохой практикой является изменение значений перечисления, т. Е. Имени или идентификатора в вашем случае.
Вы видите, что это два совершенно разных понятия, к которым следует относиться по-разному.
Чтобы хранить перечисления в сущностях (где перечисление является полем этой сущности), вы можете использовать @Enumerated
и сохранить имя или порядковый номер перечисления, или (что мы делаем чаще)одно из полей (мы в основном используем id) и предоставляем методы преобразования.
Если вы хотите сохранить настраиваемые «константы» в базе данных, вы можете попробовать использовать для этого простые сущности, сделайте конструктор закрытым (Hibernate)и другие провайдеры JPA должны иметь возможность справиться с этим) и предоставить альтернативную реализацию класса Enum
(хотя вы не можете использовать ключевое слово enum
).