Bonjour,
Je suis actuellement confronté à un problème auquel je ne trouve pas de solution.
Soient les classes suivantes :
- ManagementAct
- Care, qui dérive de ManagementAct
- MedicalCare, NurseCare et RescuerCare, qui dérivent toutes trois de Care
J'ai donc là 3 niveaux d'héritages.
Du point de vue base de données, j'ai une table
ManagementAct et une table
Care, mais pas de table pour les trois dérivations de Care, les différences en terme de données étant relativement minimes. La différenciation se fait donc via un champs discriminant
type dans la table
Care.
En toute logique, la forme du fichier de mapping serait donc la suivante :
Code:
<hibernate-mapping>
<class name="ManagementAct" table="managementAct">
<id name="id">
<generator class="assigned"/>
</id>
[...]
<joined-subclass name="Care" table="care">
<key column="id"/>
<discriminator column="type" type="string"/>
[...]
<subclass name="MedicalCare" discriminator-value="medical">
[...]
</subclass>
[...]
</joined-subclass>
</class>
</hibernate-mapping>
L'erreur qui m'est retournée est la suivante :
Quote:
org.xml.sax.SAXParseException: The content of element type "joined-subclass" must match "(meta*,subselect?,synchronize*,comment?,tuplizer*,key,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,joined-subclass*,loader?,sql-insert?,sql-update?,sql-delete?,resultset*,(query|sql-query)*)".
Celle-ci laisse donc à penser que la dtd des fichiers de mappings d'Hibernate n'admet ni balise <subclass> ni <discriminator> dans un élément <join-subclass>.
Existe-t-il une autre solution, sans avoir à modifier mes modèles de classes et de données ?
Merci d'avance pour votre aide.