2010-09-20 19 views
0

"Tableau 1" peut avoir plusieurs instances de "Tableau 2". "Table 2" est mappé avec "Table A". Mais l'instance de "Table A" est créée par "Table B". Le "Tableau 1" n'a pas toujours besoin d'une entrée du "Tableau 2".TransientObjectException lors de l'enregistrement des détails dans la base de données

Le tableau 2 comporte deux colonnes, à savoir tb1 et tbA. tb1 fait référence à la clé primaire du "Tableau 1" et à la tbA à celle du "Tableau A".

Si les données du tableau A sont enregistrées en premier, puis les données du tableau 1, cela fonctionne correctement. Mais si je sauvegarde en sauvegardant le contenu du tableau 1 qui a un mappage vers l'entrée de la table 2 et que l'entrée de la table A n'est pas encore enregistrée, j'obtiens une exception TransientObjectException. J'utilise hibernate et les annotations dans JAVA. J'ai essayé les associations en cascade et toutes les autres solutions possibles que j'ai pu trouver sur le web. Mais d'aucune utilité. S'il vous plaît, jetez quelques idées.

Exemple: Considérez Tableau 1 = Personne; Tableau 2 = appartenance; Tableau A = Voiture; Tableau B = Fabricant. Personne peut avoir beaucoup de voiture. La voiture a le person_id (se référant à la personne) et car_id (la voiture). Une voiture devrait certainement avoir un fabricant. Maintenant, dans mon application, une personne sera associée à une voiture créée par le fabricant mais non enregistrée (c'est-à-dire car_id non encore générée). Maintenant, quand je sauvegarde les données de session dans son ensemble (c'est comme cela que je peux le faire dans mon cas) je veux que les données de la voiture soient sauvegardées en premier par les bcos de données Personne, ensuite l'exception TransientObjectException ne se produira pas. Toutes les suggestions sur la façon d'accomplir cela. J'espère que l'exemple est meilleur.

+0

En relation: [Hibernate Exception help: TransientObjectException] (http://stackoverflow.com/questions/1044913/hibernate-exception-help-transientobjectexception) –

Répondre

0

Votre exemple est incroyablement difficile à suivre et l'affichage d'un (pseudo) code serait probablement utile. Mais selon ma compréhension de votre description, vous pourriez avoir besoin de session.merge() dans votre cas.