Dúvida sobre rollback com spring

Galera,

Crio uma conexão da seguinte maneira:

public static Connection getConnection(final String token) throws ConexaoInvalidaException {
StringBuilder url;
Conexao conexao;
Connection connection;

conexao = ConexaoUtil.conexaoServiceInner.getConexaoPorToken(token);
	
url = new StringBuilder("jdbc:jtds:sqlserver://@+ip:@+porta/@+baseDados");
url.replace(url.indexOf("@+ip"), url.indexOf("@+ip")+"@+ip".length(), conexao.getIp());
url.replace(url.indexOf("@+porta"), url.indexOf("@+porta")+"@+porta".length(), conexao.getPorta().toString());
url.replace(url.indexOf("@+baseDados"), url.indexOf("@+baseDados")+"@+baseDados".length(), conexao.getBaseDados());
	
try {
	Class.forName("net.sourceforge.jtds.jdbc.Driver");
	connection = DriverManager.getConnection(url.toString(), conexao.getUsuario(), conexao.getSenha());

	return connection;
} catch (ClassNotFoundException e) {
	e.printStackTrace();
} catch (SQLException e) {
	e.printStackTrace();
}

return null;

}

E uso esse Connection nesta outra classe:

@Service
public class LancamentoServiceImpl extends ConexaoUtil implements LancamentoService {

@Autowired
private LancamentoRepository lancamentoRepository;

@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=false, rollbackFor= {ConexaoInvalidaException.class, DadosInvalidosException.class, Exception.class})
public LancamentoOut geraLancamentos(LancamentoIn lancamento) throws ConexaoInvalidaException, DadosInvalidosException, Exception {
	Long idLancamentoAlfa, idLancamentoSecundario, idParcela;
	Long[] lancamentos;
	Connection connection;
	
	connection = null;
	
	try {
		this.validar(lancamento);
		
		connection = getConnection(lancamento.getToken());
		
		lancamentos = this.lancamentoRepository.gerarLancamento(lancamento, connection);
		
		idLancamentoAlfa = lancamentos[0];
		idLancamentoSecundario = lancamentos[1];
		
		for(ParcelaLancamento parcela : lancamento.getParcelas()) {
			idParcela = this.lancamentoRepository.gerarParcela(parcela, idLancamentoAlfa, connection);
			
			this.lancamentoRepository.gerarLancamentoGuia(lancamento, parcela, idParcela, connection);
			
			for(ReceitaParcela receita : parcela.getReceitas()) {
				this.lancamentoRepository.gerarReceita(receita, idParcela, idLancamentoSecundario, lancamento.getTipoLancamento(), connection);
			}
		}
		
		return new LancamentoOut(idLancamentoAlfa);
	} catch (ConexaoInvalidaException e) {
		throw e;
	} catch (DadosInvalidosException e) {
		throw e;
	} catch (Exception e) {
		throw e;
	} finally {
		closeConnection(connection);
	}
}

}

Está ocorrendo um erro no método gerarLancamentoGuia(), e o mesmo lança um Exception, mas o Rollback não é executado.
Alguma dica de onde posso estar errando?