Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Consulta para Relatórios - Matriz com Hibernate/JPQL

Bom dia meus caros! Um próspero 2022 com muitos bits e bytes para todos!

Por gentileza me tirem uma dúvida, é possível com Hibernate/JPQL fazer uma consulta e retornar uma matriz?

Vou exemplificar extamente o que estou fazendo e o que quero fazer:

Seguindo a aula de consulta para relatório, criei uma classe para retornar uma consulta de valores gastos por mês por centro de custo de uma determinada conta, funcionou tudo certindo =)

Classe que receberá os dados:

public class GastosByContaAndAnoVo {

    public GastosByContaAndAnoVo() {

    }

    public GastosByContaAndAnoVo(Integer centroCusto, Integer mes, BigDecimal valor) {
        this.centroCusto = centroCusto;
        this.mes = mes;
        this.valor = valor;
    }

    @Getter @Setter
    private Integer centroCusto;

    @Getter @Setter
    private Integer mes;

    @Getter @Setter
    private BigDecimal valor;

}

Abaixo a consulta:

public List<GastosByContaAndAnoVo> listByContaAndAno(Integer idConta, Integer ano) {

        String jpql = "SELECT NEW br.com.occhi.report.GastosByContaAndAnoVo ("
                + " lancamento.mes, "
                + " lancamento.centroCusto, "
                + " SUM (lancamento.valor)) "
                + " FROM LancamentoContabil lancamento "
                + " JOIN lancamento.classeCusto classeCusto "
                + " JOIN classeCusto.conta conta "
                + " WHERE lancamento.ano = :ano "
                + " AND conta.id = :idConta "
                + " GROUP BY lancamento.mes, lancamento.centroCusto";

        Query query = session().createQuery(jpql);
        query.setParameter("idConta", idConta);
        query.setParameter("ano", ano);

        return query.getResultList();

    }

Eu tenho como retorno 3 colunas, os meses, o centro de custo e o valor total por centro de custo naquele mês.

Porém tenho que deixar isso mais legível, vou transformar numa tabela onde terei na primeira coluna os centros de custos e nas demais colunas o meses monstrando o valor gasto dentro de cada célula referente ao mês e ao centro de custo.

C.CustoJanFevMarAbrilAte dez...
1213R$500R$485R$125R$125R$000
1220R$300R$346R$448R$125R$000

Ao invés de montar uma matriz com java, percorrer ela e fazer a consulta dentro de cada mês, consigo montar essa matriz direto na consulta?

1 resposta
solução!

Oi Aitlon,

Eu acho que vai ser bem complexo(talvez nem seja possível) montar um query que já retorne os registros do jeito que você mencionou. O mais simples mesmo seria deixar do jeito que está e montar essa matriz percorrendo a lista em memória.

Bons estudos!