Je suppose que A serait comme une classe parent et contiendrai des données communes aux différentes implémentation. Par ailleurs les enfants (AA, AB, et AC) n'implémenterai que A, en tout cas qu'une seule interface contenant des données à persister.
On peut utiliser des interfaces mais les structures communes sont redondantes, elles sont répétées pour chaque enfant dans la base.
ca donnerai un mapping du genre :
Code:
<class name="User" abstract="true">
<id name="id" type="long" column="user_id">
</id>
<property name="login" />
<property name="password" />
<union-subclass name="User1">
<property name="matricule" />
<property name="profil" />
</union-subclass>
<union-subclass name="User2" >
<property name="secteur" />
<property name="nom" />
</union-subclass>
</class>
Perso, je trouve que ça ne sert à rien sauf lorsqu'on est obligé d'utiliser des schémas de base existant.
Vu le modèle présenté, tu pourrai le simuler en créant une implémentation bidon de ton interface dont les classes enfants hériteraient, mais j'imagine que c'est plus complexe.