-->
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.  [ 4 posts ] 
Author Message
 Post subject: Neue Version beim optimistischen Sperren
PostPosted: Sun Dec 02, 2007 7:17 am 
Pro
Pro

Joined: Tue Jun 12, 2007 4:13 am
Posts: 209
Location: Berlin, Germany
Hallo,

ich habe ein Problem mit den von Hibernate verwalteten Entity-Versionen. Ich habe alle meine Entities mit @Version annotiert und sehe, dass diese Objekt-Versionen von Hibernate auch verwaltet werden.

Mein Problem ist jetzt: Wenn ich eine Entity update, dann möchte ich dem das Update anfordernden Client auch die neue Versionsnummer zurückliefern. Denn wer der ein erneutes Update machen will, dann muss er dies ja mit der zuletzt von ihm erzeugten Objektversion machen. Anderenfalls passiert die sonst ja gewünschte OptmisticLockingException.

Mein Problem ist nun: Hibernate (3.2.5GA) macht zwar den Update in der DB mit der neuen Objekt-Version, aber dies reflektiert sich nicht in der Entity, die ich dem Client zurückgebe. Kann mir jemand sagen, wie man das prinzipiell macht?

PS: ich arbeite übrigens mit der JPA-Schnittstelle.

Danke, Carlo

(Ich habe mein Problem schon im englischen Forum gepostet, aber leider bisher keine Antwort erhalten. Vielleicht gibt es ja hier mehr freundliche, Community-infizierte User?)


Top
 Profile  
 
 Post subject:
PostPosted: Sun Dec 02, 2007 8:40 am 
Beginner
Beginner

Joined: Tue Nov 27, 2007 9:44 am
Posts: 46
Hi,

im Moment verstehe ich Dein Problem noch nicht.

Kannst Du mal den zugehörigen code posten?

Danke,
Frank


Top
 Profile  
 
 Post subject: Neue Version beim optimistischen Sperren: mein Code
PostPosted: Mon Dec 03, 2007 3:01 am 
Newbie

Joined: Sat Nov 27, 2004 8:39 am
Posts: 3
Hi,

mein Code ist simpel und sieht so aus:

public Institution updateInstitution(final Institution pInstitut, final User pUsr) {

dao.getEntityManager().merge(pInstitut);
// need to get new version numbers, else the client will fail with the next save!
dao.getEntityManager().flush();
Institution inew = dao.findById(pInstitut.getId(), false);
return inew;
}

Ich bekomme von meinem Client die geänderte Entity (Institution), merge die in den Persistence Context, mache gleiche einen Flush - hier wird die neue Versions-Nummer in der DB erzeugt! - und möchte nun dem Client die geänderte Version zurückreichen. Denn der kann ja im Prinzip gleich wieder etwas ändern, wozu ihn dann die neue Versionsnummer legitmiert. Wenn er beim nächsten Update aber mit der ursprünglichen Versionsnummer ankommt, dann knallt's.
Eigentlich sehr simpel - und ich dachte, dass man hier keine Verrenkungen machen müßte. Schon der flush ist mir verdächtig - es sollte m.E. ohne gehen.
Carlo

_________________
Carlo Luib-Finetti
Berlin/Germany


Top
 Profile  
 
 Post subject: Problem gelöst
PostPosted: Mon Dec 03, 2007 11:09 am 
Pro
Pro

Joined: Tue Jun 12, 2007 4:13 am
Posts: 209
Location: Berlin, Germany
Wie schon im englische Forum geschrieben, habe ich die Lösung meines Problems gefunden: es lag nicht im Hibernate-Bereich, sondern beim Client.

Sorry für den unnötigen Alarm!
Carlo


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