Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Wie funktionieren Savepoints mit Hibernate?
PostPosted: Tue Dec 21, 2010 5:47 am 
Beginner
Beginner

Joined: Tue Dec 21, 2010 5:26 am
Posts: 25
Hallo zusammen,

Ich benutze Hibernate erstmal zur Probe mit einer sehr einfachen Tabelle. Alle CRUD Operationen funktionieren auch soweit. Nun versuche ich die Savepoints zu nutzen. Leider ignoriert Hibernate den Rollback zu einem solchen.

Hier mal etwas code:
Code:
Transaction tx = HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();

Benutzer benutzer1 = benutzerDAO.findById(new Integer(1), false);
benutzer1.setVorname("Jane");
benutzerDAO.makePersistent(benutzer1);

SetSavepointWork work = new SetSavepointWork("my_savepoint");
HibernateUtil.getSessionFactory().getCurrentSession().doWork(work);
Savepoint savepoint = work.getSavepoint();

benutzer1.setVorname("John");
benutzerDAO.makePersistent(benutzer1);
HibernateUtil.getSessionFactory().getCurrentSession().doWork(new Work(){
         public void execute(Connection connection) throws SQLException
         {
            connection.rollback(savepoint);
         }
      });
tx.commit();


Die SetSavepointWork Klasse ist eine simple Implementierung des Work Interfaces. Sie hält zusätzlich den Savepoint und kann ihn per Getter zurückgeben.

Wo liegt also mein Fehler? Ich erwarte, dass ich den Vornamen auf 'Jane' setze, in die DB schreibe, dann einen Befehl absetze der den Vornamen auf 'John' setzt und in die DB schreibt. Aber dann einen Rollback auf den Zeitpunkt macht zu dem nur 'Jane' gesetzt sein sollte.
Leider wird das ignoriert und der finale Eintrag in der DB ist die Aktion des letzten Setters ('John')...

Ich hoffe ihr könnt mir da etwas weiterhelfen.

Gruß,
Michael


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

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.