Je dois mapper les énumérations qui n'ont pas implémenté l'interface auparavant à la base de données existante, qui stocke des énumérations dans la même table que la classe propriétaire en utilisant le @Enumerated(EnumType.STRING)
.Mappage enum Hibernate
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(); }
}
Comment le mappage devrait être géré dans ce cas? La persistance dans la base de données ne change pas car toutes les énumérations implémentant l'interface auront des valeurs différentes, mais je ne suis pas sûr de la manière dont les objets doivent être récupérés depuis la base de données (ai-je besoin d'un mappeur personnalisé enum utilisant les classes enum spécifiées? Hibernate supporte-t-il nativement cette fonctionnalité?).
Dans mon cas, je ne sais pas ce que la classe de l'ENUM sera. Lors de l'instanciation de 'A', Hibernate devra choisir l'une des énumérations {X, Y}. – dm3
Il ne devrait pas être difficile de modifier l'exemple de l'implémentation UserType selon vos besoins. Par exemple, au lieu de stocker uniquement la valeur, vous pouvez également stocker la classe (par exemple com.example.X.John ou X.John, mais vous aurez besoin d'un mappage de X à com.example.X) – sfussenegger
Signifie besoin d'un mappeur personnalisé (n'a pas vu votre lien vers pastebin). Merci d'avoir répondu. – dm3