Having thought about this a bit more, I think we should throw an exception in the case we roll back, that specifies that we are in fact rolling back instead of committing (the user asked us to commit, and we did something completely different...), and provide the causing exception as the cause of the rollback exception.

So rewrite to something like:

    try {
        createTransactionCommands();
    } catch (Throwable t) {
        transactionManager.rollback();
        throw new OopsIRolledBackInsteadException(t);
    } else { // it's a shame Java doesn't have else on try-catch...
        transactionManager.commit();
    }