Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Devolvendo um único resultado (função AVG no JPQL)

Boa tarde!

Conta conta = new Conta();
conta.setId(1);

Query query = manager.createQuery("select avg(m.valor) from Movimentacao m where m.conta=:pConta");
query.setParameter("pConta", conta);

BigDecimal resultado = (BigDecimal) query.getSingleResult();

No exemplo acima (Aula 01.08) está informando que devemos fazer casting do getSingleResult() para BigDecimal mas, pelo que entendi do curso anterior é que a função avg não trabalha com BigDecimal e deveríamos usar Double.

Minha afirmação está correta ou me enganei?

Abraço!

2 respostas

Sua afirmação está correta: se for realizar o avg, trabalhe com Double.

solução!

Boa tarde!

Pois então, na aula 01.08 tem o seguinte texto:

Resposta correta: getSingleResult().

O método getSingleResult() devolve um objeto cujo tipo varia baseado no JPQL que é executado. Por exemplo, para pegar o valor médio (avg) das movimentação de uma conta podemos usar:

E logo depois o código que coloquei acima.

Não teriam que modificar esse código onde tem BigDecimal colocar Double?

Abraço!