Hallo,
ich verwende Hibernate 3.4.
Neulich habe ich beim Testen festgestellt, dass Rollback von Hibernate nicht funktioniert.
In der Konfigurationsdatei habe ich autocommit auf false eingestellt.
Code:
<property name="hibernate.connection.autocommit">false</property>
Ich verwende native SQL. Es werden mehrere Statements nacheinander ausgeführt.
Code:
try{
transaction = session.beginTransaction();
query1.executeUpdate();
query2.executeUpdate();
query3.executeUpdate();
transaction.commit();
}catch(HibernateException he){
transaction.rollback();
}
Ich habe erwartet, dass dies alles oder nichts Prinzip verfolgen soll.
Leider stelle ich fest, dass nach jeder executeUpdate() Anweisung, die Daten in der Datenbank persistiert werden. Wenn ein Fehler beim query2 auftritt, wird query1 gar nicht rückgängig gemacht.
Frage: Hat das mit autocommit was zu tun? Ist was mit der Konfiguration nicht in Ordnung? Muss ich autocommit programmatisch explizit auf false setzen?
Bin für jeden Vorschlag dankbar.
Gruß,
Ming