A mon avis, PaiementDoc est une classe d'association et devrait plutôt être gérée avec un composite-element (chapitre 8 du document de référence hibernate).
Ensuite la façon de mapper le composite-element dépend du point d'entrée dans le tryptique : document, paiement ou type.
Admettons qu'on entre par le document on aurait le mapping suivant dans le hbm du document :
Code:
<set name="paiementdoc" table="paiementdoc" lazy="true">
<key column="doc"/>
<composite-element class="xxx.PaiementDoc">
<parent name="doc"/>
<property name="montantPaye"/>
<many-to-one name="type" class="xxx.Type"/>
<many-to-one name="paiement" class="xxx.paiement"/>
</composite-element>
</set>
La lecture d'un document ramène les xxx.PaiementDoc associés, l'ajout/modif/suppression d'un xxx.PaiementDoc se fait à partir du document.
Ne connaissant pas exactement ton besoin, je m'éloigne peut-être carrément de ce que tu veux