Скажите, что у вас есть класс, который должен сохранять некоторые отображаемые объекты, используя любой Enum для ключа. Используя это отображение, оно генерирует, например. varbinary
(SQL Server) с шестнадцатеричным значением.JPA Hibernate Персистировать любой Enum (ключ карты) в человекообразном формате?
@Entity
public abstract class X {
@ElementCollection
private Map<Enum, Boolean> values;
}
Это работает, но главная проблема - читаемость. Данные в базе данных не читаются человеком. пытаясь использовать @MapKeyEnumerated(EnumType.STRING)
или с EnumType.Ordinal не работает, так как Enum может быть любым типом и который сохраняет MyEnum.SOME_VALUE
как «SOME_VALUE».
Возможно ли перехватить сохранение/извлечение и сохранить полное имя (com.x.myenum.value) или что-то разборчивое, которое можно было бы использовать для восстановления перечисления вместо шестнадцатеричного значения?