-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 
Author Message
 Post subject: Generierte Id nach fehlerhaftem flush zurücksetzen?
PostPosted: Fri Sep 11, 2009 10:49 am 
Newbie

Joined: Fri Sep 11, 2009 10:15 am
Posts: 8
Hallo,

ich habe das Problem, dass ein insert eines Objektes fehlschlägt (geplant, da Constraint-Verletzung) aber Hibernate die Id für das neu erstellte Objekt
bereits gesetzt hat (gesetzt über Oracle-Sequenz).
Gibt es eine Möglichkeit, dass Hibernate bei fehlerhaftem insert die bereits gesetzt Id wieder zurücksetzt?

Beste Grüße

Peter


Top
 Profile  
 
 Post subject: Re: Generierte Id nach fehlerhaftem flush zurücksetzen?
PostPosted: Mon Sep 14, 2009 1:21 am 
Senior
Senior

Joined: Tue Oct 28, 2008 10:39 am
Posts: 196
Soweit ich weiß gibt es da keine Möglichkeit (und das ist ehrlich gesagt auch gut so!). Warum solltest du die Sequenz zurückdrehen wollen? Das ist doch nur ein technisch erzeugter Wert.


Top
 Profile  
 
 Post subject: Re: Generierte Id nach fehlerhaftem flush zurücksetzen?
PostPosted: Mon Sep 14, 2009 2:26 am 
Newbie

Joined: Fri Sep 11, 2009 10:15 am
Posts: 8
Generell stimme ich dir zu. Das Problem ist nur, dass Hibernate nun davon ausgeht, dass das Objekt bereits in der Datenbank vorhanden ist. (Primary Key ist nicht mehr "null"). Also wird Hibernate ab nun kein insert mehr aufrufen, sondern nur noch updates, die allerdings nichts bringen, da das Objekt ja nicht in der Datenbank vorhanden ist...

Beste Grüße

Peter


Top
 Profile  
 
 Post subject: Re: Generierte Id nach fehlerhaftem flush zurücksetzen?
PostPosted: Mon Sep 14, 2009 2:33 am 
Senior
Senior

Joined: Tue Oct 28, 2008 10:39 am
Posts: 196
Da die Session einen Fehler geworfen hat, *darfst* du sie nicht mehr weiterverwenden. Du kannst sie also schließen und deine Entity ist detached (obwohl sie nie gespeichert worden ist), jetzt kannst du die ID wieder auf null setzen und in einer anderen Session speichern, was zu einem Insert führen sollte.


Top
 Profile  
 
 Post subject: Re: Generierte Id nach fehlerhaftem flush zurücksetzen?
PostPosted: Mon Sep 14, 2009 3:09 am 
Newbie

Joined: Fri Sep 11, 2009 10:15 am
Posts: 8
Habe ich mir vom Prinzip her auch so vorgestellt. Allerdings habe ich das Problem, dass der Objektgraph doch recht komplex ist und ich nicht genau sagen kann bei welchem insert die constraint-Verletzung aufgetreten ist. Ich weiss also nicht bei welchem Objekt ich die Id zurücksetzen muss. Zur Zeit sehe ich als einzige Möglichkeit, den gesamten Graphen zu clonen... Ich dachte aber es müsste einfacher/"schöner" gehen.

Beste Grüße

Peter


Top
 Profile  
 
 Post subject: Re: Generierte Id nach fehlerhaftem flush zurücksetzen?
PostPosted: Tue Sep 22, 2009 5:47 am 
Newbie

Joined: Fri Sep 11, 2009 10:15 am
Posts: 8
Gibt es keine andere Möglichkeit als den ganzen Objekt-Baum zu clonen?

Beste Grüße

Peter


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.