Bonjour,

J'ai un problème simple que je n'arrive pas à résoudre d'une façon satisfaisante.

Prenons une classe Parent (idParent, nom, prenom, set<Enfants>)
Puis une classe Enfant ( idEnfant, nom, age, Parent ).

Un parent ayant un set d'enfant, un enfant ayant un parent.

J'aimerais pouvoir créer un parent, lui ajouter des enfants et sauver tous ce graphe par un appel de saveOrUpdate sur le parent. Voici le mapping de la collection coté parent :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<set name="enfants" lazy="true"  cascade="all" inverse="true" >
            <key column="id_parent"/>
            <one-to-many  class="advertisementapp.hibernate.entities.Enfant"  />
    </set>
Puis coté enfant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<many-to-one name="parent" class="advertisementapp.hibernate.entities.Parent" column="id_parent" not-null="true" fetch="select" />
Voilà, si je me contente de faire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Parent par = new Parent()..
par.GetEnfants.Add( new Enfant("toto", 14) );
 
session.saveOrUpdate( par );
Je me ramasse une exception de valeur nulle interdite. Cela arrive semble-t-il parce que la propriété "parent" de Enfant est à null.

Je me demande si il y a pas une solution pour que je n'ai pas besoin de setter la relation des deux cotés du graphe, c'est à dire ajouter l'enfant au Set du parent *ET* définir dans enfant la propriété parent?
En gros que hibernate se charge de Setter cette propriété Parent à ma place.

Est-ce possible? Car sinon je vois aucune solution pour garantir qu'un enfant ajouté au Set d'un parent ait bel et bien *ce même parent* dans ses propriétés.