U bent waarschijnlijk met een transactie begonnen en probeert een nieuwe transactie te starten zonder de vorige te hebben vastgelegd of teruggedraaid. Het idioom bij het gebruik van programmatische transactieafbakening is de volgende:
try {
sess.getTransaction().begin();
// do some work
sess.getTransaction().commit()
}
catch (RuntimeException e) {
sess.getTransaction().rollback();
throw e;
}
Dit is omslachtig en foutgevoelig, en dit is een van de redenen waarom het gebruik van EJB's of Spring voor declaratieve transacties zo handig is.