Bonjour,

Je suis dans un cas que je pensais classique : j'ai une classe mappée SuperType, et une classe Type qui en hérite. J'ai choisi la stratégie de mapping d'héritage "une table par classe avec discrimateur".

J'obtiens donc comme mapping pour la classe Type quelque chose comme :
<subclass name="Type" extends="SuperType" discriminator-value="TYPE">
<join table="TYPE">
<key column="ID"/>
</join>
</subclass>

Pas de problème, ça marche. Le problème est que la table OTHER_TYPE est liée par clé étrangère à la classe TYPE. Du coup, dans le mapping de OTHER_TYPE, on ajoute :
<many-to-one name="type" class="Type" column="TYPE_ID" unique="true" not-null="true" />

Et dans le mapping de TYPE, j'ajoute naturellement un one-to-one, pour avoir un mapping bi-directionnel, ce qui donne en entier :
<subclass name="Type" extends="SuperType" discriminator-value="TYPE">
<join table="TYPE">
<key column="ID"/>
<one-to-one name="otherType" class="OtherType" property-ref="type" unique="true" />
</join>
</subclass>

Cette dernière ligne fait planter hibernate, ou plus précisemment le parseur SAX, qui dit que on ne peut pas avoir de <one-to-one> dans un <join>. Quelqu'un sait pourquoi, et s'il y a un moyen de contourner ce problème ?

Merci !