Мне нужно отобразить перечисления, которые ранее не реализовали интерфейс в существующей базе данных, которая хранит перечисления в той же таблице, что и класс владельца, используя @Enumerated(EnumType.STRING)
.
class A {
HasName name;
}
interface HasName {
String getName();
}
enum X implements HasName {
John, Mary;
public String getName() { return this.name(); }
}
enum Y implements HasName {
Tom, Ann;
public String getName() { return this.name(); }
}
Как должно обрабатываться отображение в этом случае? Сохранение базы данных не изменяется, поскольку все перечисления, реализующие интерфейс, будут иметь разные значения, но я не уверен, как объекты должны быть извлечены из БД (нужен ли мне настраиваемый сопоставитель, который попытается создать экземпляр enum, используя указанные классы enum? Поддерживает ли Hibernate эту функциональность?).