Мне нужно сопоставить перечисления, которые не реализовали интерфейс заранее, с существующей базой данных, которая хранит перечисления в той же таблице, что и класс владельца, используя @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 с использованием указанных классов перечисления? Поддерживает ли Hibernate эту функцию изначально?).