-->
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.  [ 2 posts ] 
Author Message
 Post subject: StaleStateException auch ohne Änderungen?
PostPosted: Thu Apr 01, 2010 5:33 am 
Regular
Regular

Joined: Thu Apr 14, 2005 10:39 am
Posts: 115
Hallo,
kann es sein, dass Hibernate es auch ablehnt ein nicht geändertes Objekt zu speichern? Schließlich, würde ja dadurch keine Zeile verändert. Erwartet Hibernate also, dass sich bei jeder Aktion immer etwas ändert, oder nicht?

Bekomme nämlich ein solche Fehlermeldung:
Quote:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update ; actual row count: 0; expected: 1

Daher obige Vermutung, dass es erwartet das sich min. eine Zeile ändert.
Allerdings hätte ich eine Meldung der Art "Versionattribut not changed, save or update operation rejected." oder so ähnlich erwartet.
Könnte allerdings sein, dass Hibernate es aufgrund des großen Objektbaums ohne Versionattribute (@Version nur in Hauptklasse) dies nicht feststellen kann.

Ist vor allem interessant, wenn man mehre gleichartige Objekte in einer Transaktion speichern will, da man die Ausnahme erst beim commit bekommt.
Daher müsste man wohl für jedes Objekt eine separate Transaction benutzen. da bei jeder Ausnahme die Session ja unbrauchbar wird. Somit würde vorheriges flushen, den Fehler nur früher provozieren. Ist halt auch schwierig zu unterscheiden, ob es nicht geändert wurde (eigentlich kein Fehler den der Anwender wissen müsste) oder die Änderung wegen konkurrierender Änderung verworfen wird.

Vielen Dank.

Viele Grüße Michael


Top
 Profile  
 
 Post subject: Re: StaleStateException auch ohne Änderungen?
PostPosted: Thu Apr 01, 2010 8:32 am 
Expert
Expert

Joined: Tue Jun 16, 2009 3:36 am
Posts: 990
Hallo Michael,

also ich vermute mal ganz stark, dass Du sehr wohl ein Object geaendert hast, wenn auch unabsichtlich.
Ansonsten macht Hibernate naemlich gar kein update.
(Hibernate vergleicht dein Object mit einem Snapshot den Hibernate beim lesen gemacht hat,
ist dein Object noch deckungsgleich mit dem Snapshot, dann gibt es kein update.)
Da dasselbe Object aber inzwischen jemand anderes veraendert hat, bekommst Du eine StaleStateException.
An Deiner Stelle wuerde ich das sql-logging (mitparameter) einschalten, um erstmal festzustellen welcher record genau und was genau in diesem record upgedatet wird.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.