Ich muss die Enums, die die Schnittstelle nicht zuvor an die vorhandene Datenbank, die Enums in der gleichen Tabelle wie die Besitzer-Klasse mit der @Enumerated(EnumType.STRING)
speichert.Hibernate-Enum-Zuordnung
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(); }
}
Wie sollte das Mapping in diesem Fall behandelt werden? Die Speicherung in der Datenbank ändert sich nicht, da alle enums, die die Schnittstelle implementieren, unterschiedliche Werte haben werden, aber ich bin mir nicht sicher, wie die Objekte aus der DB abgerufen werden sollen (brauche ich einen benutzerdefinierten Mapper, der versucht, einen zu instanziieren) Enum mit den angegebenen Enum-Klassen? Unterstützt Hibernate nativ diese Funktionalität?).
In meinem Fall ich weiß nicht, was die Klasse der Enumeration sein wird. Wenn Sie "A" instanziieren, muss Hibernate eines der {X, Y} -Enums auswählen. – dm3
Es sollte nicht schwierig sein, die Beispiel-UserType-Implementierung an Ihre Bedürfnisse anzupassen. Anstatt beispielsweise nur den Wert zu speichern, können Sie auch die Klasse speichern (zB com.example.X.John oder X.John, aber dann brauchen Sie eine Zuordnung von X zu com.example.X) – sfussenegger
Means I brauche einen benutzerdefinierten Mapper (habe deinen Link zu Pastebin nicht gesehen). Danke für die Antwort. – dm3