Bonjour à tous,
je cross-post ici et en Français, peut-être que j'aurais davantage de réponses.
J'ai un modèle de données censé contenir plusieurs types d'objet dans un nombre très restreint de classe/table. Il définit un modèle d'héritage à 2 niveaux: A <-B. Pour des raisons de robustesse et de performances, j'aimerais étendre le modèle avec des sous classes C1,C2,C3.. qui ne portent aucune données de plus que B(dont elles héritent). Mais elles servent juste de coquille me permettant de réaliser des requêtes polymorphe.
Afin de conserver la compatibilité avec le code existant, j'ai mappé de la façon suivante: A et B sont mappés en table per subclass (donc une table pour chacune des entités, disons TABLE_A et TABLE_B). (joined-subclass) et C1,C2,C3 sont mappé en table per class hierarchy, dans la même table que B avec une colonne discriminator. (subclass)
Le mapping semble correct, car toute ma mécanique s'instancie correctement, hibernate se lance, et je peux même faire des requetes sur mes autres entités. Par contre, il y'a un soucis lorsque j'essaie d'insérer (save) une entité de C*: Hibernate fait 3 insert SQL: Le premier sur TABLE_A pour insérer les prporiétes de la classe mère: OK Le deuxième sur TABLE_B pour les propriétés de B, mais sans le discriminator Le troisième toujours sur TABLE_B mais avec juste l'ID. Et donc, j'obtiens une SQL Exception.
Quelqu'un pourrait il m'eclairer sur la faisabilité de cette configuration? J'ai un doute en lisant la doc hibernate: "Hibernate does not support mixing <subclass>, <joined-subclass> and <union-subclass> mappings under the same root <class> element " je ne suis pas certains d'être dans ce cas.
Si je me réfère à la section "Mixing table per class hierarchy with table per subclass" de la doc hibernate, je suis en quelque sorte dans le cas opposé qui est: "mélanger table par sous class puis table par hierarchie de classe"
|