Jag har problem med transaktioner. Jag har hållit på med följande i timmar utan att få det att funka:

Ska spara en ny order. Jag sparar då data i två tabeller, "order" och "orderdetails". Till första tabellen lägger jag till en rad och till den andra en eller flera. Jag vill göra det hela i en transaktion så att om något går fel ska allt "rollbackas". Jag gör det (typ) på följande sätt:

Connection con = ConnectionPool.getInstance().checkOut();        
try {
Statement stmt = con.createStatement();
con.setAutoCommit(false);

stmt.execute("INSERT bla bla INTO order");

for(4 gånger) {
stmt.execute("INSERT bla bla INTO orderDetails");
}

con.commit();

} catch (Exception e) {
con.rollback();
} finally {
ConnectionPool.getInstance().checkIn(con);
}

Om det går fel vid den sista stmt.execute i for-loopen så kommer ju ett Exception kastas och raden con.rollback() kommer exekveras. Jag tycker då att alla mina executes ska tas bort men så blir det inte. Den första (den i tabell "order") rollbackas men inte de tre följande i for-loopen som lyckades innan det kraschar.

Någon som har en idé om varför?