Tenho uma function que retorna o total de contas a pagar por mes uma tabela.
CREATE OR REPLACE FUNCTION totalContasAPagarPorMes(dataInicial DATE, dataFinal DATE) RETURNS TABLE(mes DOUBLE PRECISION, total NUMERIC(19,2)) AS $BODY$
DECLARE
var_r record;
BEGIN
FOR var_r IN (SELECT EXTRACT(MONTH FROM vencimento) AS mes,
SUM(CASE WHEN moeda_id = (SELECT moedapadrao_id FROM configuracao) THEN valor
ELSE (SELECT converterValorNaMoeda(valor,(SELECT cotacaoEntreMoedasNaEmissao((SELECT moedapadrao_id FROM configuracao),moeda_id,emissao)),moeda_id)) END) as total
FROM cobranca AS c
WHERE c.vencimento::date BETWEEN dataInicial AND dataFinal
AND c.vencimento::time BETWEEN '00:00:00' AND '23:59:59'
AND (c.cobranca_classe_nome = 'TITULO' OR cobranca_classe_nome = 'DESPESA_PROVISIONADA')
AND operacaofinanceira = 'SAIDA'
GROUP BY 1
ORDER BY 1 ASC)
LOOP
mes := var_r.mes;
total := var_r.total;
RETURN NEXT;
END LOOP;
END;
$BODY$ LANGUAGE plpgsql;
Criei no java uma classe que receberia esses valores na consulta da function.
public class TotalNoMes {
private Double mes;
private BigDecimal total;
public TotalNoMes(Double mes, BigDecimal total) {
this.mes = mes;
this.total = total;
}
public Double getMes() {
return mes;
}
public void setMes(Double mes) {
this.mes = mes;
}
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
@Override
public String toString() {
return "TotalNoMes{" + "mes=" + mes + ", total=" + total + '}';
}
}
Gostaria de saber como eu faço o select dessa function com JPA. Uso o postgres como banco de dados.
Alguém sabe como fazer essa consulta?