Retorno de Function (MySQL + Spring)

Estou com problema no uso de uma function criada no MySQL através de código que usa a classe JdbcTemplate do Spring.

Quando testo a function diretamente no Workbench funciona corretamente, retornando true ou false de acordo com as entradas passadas. Porém, quando tento obter o resultado via código Java sempre retorna false, o que me leva a crer se tratar de alguma falha na conversão de tipos.

Gostaria da ajuda dos colegas para me ajudar a descobrir o motivo da falha. Porque a variável ‘result’ sempre está como false?

  • código Java
(...)
Object[] args = new Object[4];
int[] tipos = new int[4];
args[0] = ag.getId();   tipos[0] = Types.INTEGER;
args[1] = p.getId();   tipos[1] = Types.INTEGER;
args[2] = ano.getAno();   tipos[2] = Types.INTEGER;
args[3] = total.getTotal();   tipos[3] = Types.INTEGER;

boolean result = (Boolean)getJdbcTemplate().queryForObject("SELECT COMPARA_QTDE_EMPRESA (?, ?, ?, ?)"), args, tipos, Boolean.class);
  • function
CREATE DEFINER=`root`@`localhost` FUNCTION `COMPARA_QTDE_EMPRESA`(AG INT, P INT, ANO INT, AINSERIR INT) RETURNS tinyint(1)
    DETERMINISTIC
BEGIN
    DECLARE TOTAL_EMPRESA_PESQUISA INT;
    DECLARE TOTAL_EMPRESA_AGENTE INT;
    
    SELECT IF(COUNT(*), EP.TOTAL, 0) INTO TOTAL_EMPRESA_PESQUISA
    FROM CTRLPRODUCAO.EMPRESA_PESQUISA EP
    WHERE EP.AGENCIA = AG
    AND EP.PESQUISA = P
    AND EP.ANO = ANO;

    SELECT IFNULL(SUM(EA.TOTAL), 0) INTO TOTAL_EMPRESA_AGENTE
    FROM CTRLPRODUCAO.EMPRESA_AGENTE EA
    WHERE EA.AGENCIA = AG
    AND EA.PESQUISA = P
    AND EA.ANO = ANO;
    
    RETURN IF(TOTAL_EMPRESA_PESQUISA = 0, FALSE,(TOTAL_EMPRESA_PESQUISA < (TOTAL_EMPRESA_AGENTE) + AINSERIR));
END