Pravděpodobně jste zahájili transakci a pokoušíte se zahájit další, aniž byste provedli potvrzení nebo vrácení předchozí transakce. Idiom při použití programového vymezení transakcí je následující:
try {
sess.getTransaction().begin();
// do some work
sess.getTransaction().commit()
}
catch (RuntimeException e) {
sess.getTransaction().rollback();
throw e;
}
To je těžkopádné a náchylné k chybám, a to je jeden z důvodů, proč je použití EJB nebo Spring pro deklarativní transakce tak užitečné.