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 :
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
<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
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.
Partager