2012-04-12 21 views
-2

Ich habe einen Code, der das Datum aus der Datenbank bekommt, von dem ich Jahr wie unten Code nahm:java mit Hibernate

Date expiryDate=dataMgr.getDate(); 
int validity=2;  
expiryDate.setYear(expiryDate.getYear() + validity); 
// some piece of code 
tx.commit(); 

i aus der Datenbank zu holen winter verwenden. Alles funktioniert gut, aber das Problem ist nach dem Commit .... Das DB Jahr, von dem ich das Datum genommen habe (dataMgr.getDate()) wird auch geändert ich weiß nicht warum? kann mich jemand ausradieren ???

Zum Beispiel, bilden Sie den obigen Code expiryDate:4/21/2012 (aus der Datenbank). Nach dem Commit wird es in 4/21/2014 in DB geändert, was nicht passieren sollte ?? Ich habe das entsprechende Objekt nirgends wo oder Aktualisierung wo ???

mir Hilfe

+0

Die Formatierung bitte korrigieren –

+0

Verwenden Sie dasselbe Objekt? – Ketan

Antwort

1

Objekte sind in Persistent state in einem einzigen transaction aus. Darüber hinaus beziehen sich sowohl expiryDate als auch dateMgr.getDate auf dasselbe Objekt.

Statt Bezug zu bekommen, erhalten Klon des Objekts

Date expiryDate=dataMgr.getDate().clone(); 

ich über die Syntax nicht sicher bin, überprüfen Sie bitte, dass.

+0

Vielen Dank Sohaib es funktioniert gut mit Klon :) :) –

+0

@vijayakumar bitte markieren Sie die Antwort akzeptiert, wenn es Ihnen geholfen hat. – Zohaib