After many search, my colleague found a solution.
First case : one stored procedure for the "COMMANDE" and the "FOURNISSEUR" is loaded automatically by Hibernate (lazy or not lazy)
Code:
<sql-query name="prc.load.commande" callable="true">
<return alias="COMMANDE" class="fr.suo.out.tutorial.metier.Commande">
<return-property name="id" column="IDCOMMANDE" />
<return-property name="code" column="CDCOMMANDE" />
<return-property name="libelle" column="LBCOMMANDE" />
<return-property name="dateCommande" column="DTCOMMANDE" />
<return-property name="montant" column="MTCOMMANDE" />
<return-property name="fournisseur" column="IDFOURNISSEUR" />
</return>
<![CDATA[
{ call PRC_LOAD_COMMANDE(?) }
]]>
</sql-query>
Second case : only one stored procedure for the"COMMANDE" and the "FOURNISSEUR" :
Code:
<sql-query name="prc.load.commande.fournisseur" callable="true">
<return alias="COMMANDE" class="fr.suo.out.tutorial.metier.Commande">
<return-property name="id" column="IDCOMMANDE" />
<return-property name="code" column="CDCOMMANDE" />
<return-property name="libelle" column="LBCOMMANDE" />
<return-property name="dateCommande" column="DTCOMMANDE" />
<return-property name="montant" column="MTCOMMANDE" />
<return-property name="fournisseur" column="IDFOURNISSEUR" />
</return>
<return alias="FOURNISSEUR" class="fr.suo.out.tutorial.metier.Fournisseur">
<return-property name="id" column="IDFOURNISSEUR" />
<return-property name="code" column="CDFOURNISSEUR" />
<return-property name="libelle" column="LBFOURNISSEUR" />
</return>
<![CDATA[
{ call PRC_LOAD_COMMANDE_FOURNISSEUR(?) }
]]>
</sql-query>
The solution is in the row
<return-property name="fournisseur" column="IDFOURNISSEUR" /> in the "return" mapping of the "fournisseur" property of the "COMMANDE" ojbect.
I hope it's help some body