public virtual void rollback() { // managed transaction, mark rollback-only if not done so already. try { Transaction transaction = Transaction; int status = transaction.Status; if (status != Status.STATUS_NO_TRANSACTION && status != Status.STATUS_ROLLEDBACK) { transaction.setRollbackOnly(); } } catch (Exception e) { throw LOG.exceptionWhileInteractingWithTransaction("setting transaction rollback only", e); } }