2010-12-06 77 views
0

Disons que j'ai deux classes, Parent et Child. Ces deux sont liés par une relation unidirectionnelle.Récupération de l'ID d'objets multiples dans une relation plusieurs-à-un dans Hibernate

<bag name="children" cascade="all"> 
    <key column="parent_id" /> 
    <one-to-many class="Child" /> 
</bag> 

Si je veux ajouter un élément enfant au parent, pour autant que je sais que je dois charger le parent, ajoutez un enfant, et sauver le parent:

Parent p = dao.getParent(); 
Child c = new Child(); 
p.getChildren().add(c); 
dao.saveOrUpdate(p); 

Cependant , un problème survient lorsque vous essayez de refléter ce changement dans le modèle de données sauvegardant l'interface graphique. Pour autant que je sache, il n'y a aucun moyen de trouver la clé primaire qui a été affectée à c lorsqu'elle a été conservée. Cela provoque un problème dans l'interface graphique, car si j'ajoute plusieurs lignes au modèle, il est impossible de les distinguer pour une utilisation ultérieure.

Des idées sur la façon dont je pourrais être en mesure d'accéder à la clé primaire de l'enfant après qu'elle a été persistée?

Répondre

2

Vous pouvez accéder aux clés générées automatiquement après le vidage de la session, c'est-à-dire après une erreur session.flush() ou après validation d'une transaction.

+0

Huh ... J'aurais juré que j'ai vérifié ça et que ça revenait comme nul. Mais j'ai juste débogué et tu as raison. Merci. – Tenner