Bonjour!
Je suis confronté à un problème et peu expérimenté en hibernate...aussi j'apprécierais grandement votre aide!
Voilà mon problème:
J'ai une table contenant un type parent (par exemple Vehicule) et contenant un attribut discriminant (de type String) permettant d'associer chaque ligne en base à une instance d'une sous-classe de Vehicule (ex: Voiture, Charette, Vélo....). Bref de l'héritage avec une table unique et un attribut discriminant.
Je définis le mapping de la classe mère (Vehicule.hbm.xml):
<subclass name="canal.hibernate.database.Voiture" discriminator-
value="VOITURE"></subclass>
<subclass name="canal.hibernate.database.Charette" discriminator-value="CHARETTE"></subclass>
etc...
Jusque là tout va bien. Mais admettons, que j'ai un objet Grange, auquel je veux lier un objet de type Charette (et en aucune façon un vélo ou une voiture)... je comptais mettre une référence vers une Charette dans la classe Grange afin de bénéficier de la navigation hibernate (grange.getCharette())....
Mais, problème: ma clé primaire dans Vehicule est [identifiant vehicule, critère discriminant]. Comment fais-je pour indiquer que le critère discriminant à la valeur fixe "CHARETTE"? car une charette et une voiture peuvent avoir même identifiant...
Est-ce que c'est possible de fixer ce déterminant à une valeur fixe dans le mapping de Grange, pour la propriété correspondant à getCharette()?
Est-ce que le fait d'avoir défini une clé primaire englobant l'attribut discriminant est une erreur, qui m'empêchera définitivement de faire ce que je souhaite?
Merci beaucoup à celui ou celle qui me donnera la clé de ce problème! et aussi à tous ceux qui auront pris la peine de me lire ;-)
Partager