Cela dépend de ce que votre structure de classe est ou ce que vous cherchez dans une structure de classe. Si ceux-ci sont vraiment les seules colonnes dans les tables, alors cette façon semble trop lourde et fait des moyens moins qu'optimaux pour accéder à X & Y (classC.A.X & classC.B.X) mais cela fonctionnerait. Peut-être que vous pourriez avoir des propriétés non-enregistrées sur ClassC qui ont fait ces appels pour vous d'une manière plus succincte.
<class name="ClassA" table="A">
<id name="Id" column="ID">
<generator class="native"/>
</id>
<property name="x" column="X" />
</class>
<class name="ClassB" table="B">
<id name="Id" column="ID">
<generator class="native"/>
</id>
<property name="y" column="Y" />
</class>
<class name="ClassC" table="C">
<id name="Id" column="ID">
<generator class="native"/>
</id>
<many-to-one name="A" class="ClassA" column="A_ID"/>
<many-to-one name="B" class="ClassB" column="B_ID"/>
</class>
Si C ne dispose que ces colonnes, vous pouvez changer cela d'utiliser un identifiant composite (regarder la docs). Ensuite, en fonction de vos besoins, vous pouvez configurer la cascade de façon à ce que vous ne fassiez que du désordre avec ClassC.