Du har sandsynligvis påbegyndt en transaktion og forsøger at starte en anden uden at have begået eller tilbageført den forrige. Formsproget ved brug af programmatisk transaktionsafgrænsning er følgende:
try {
sess.getTransaction().begin();
// do some work
sess.getTransaction().commit()
}
catch (RuntimeException e) {
sess.getTransaction().rollback();
throw e;
}
Dette er besværligt og udsat for fejl, og dette er en af grundene til, at det er så nyttigt at bruge EJB'er eller Spring til at have deklarative transaktioner.