1
resposta

Erro no JPQL

Quando eu quizer trazer varios valores no mesmo SQL que tipo de retorno devo usar, ou como devo fazer ?

package teste;

import java.util.List;

import javax.persistence.EntityManager; import javax.persistence.Query;

import dao.JPAUtil; import model.Conta;

public class TesteFuncoesNaMovimentacao {

public static void main(String[] args) {

EntityManager em = new JPAUtil().getEntityManager();

em.getTransaction().begin();

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

String jpql = "select min(m.valor), max(m.valor), count(m), avg(m.valor), sum(m.valor) from Movimentacao m where m.conta=:pConta";

Query query = em.createQuery(jpql); query.setParameter("pConta", conta);

List soma = query.getResultList();

soma.forEach(m -> System.out.println(m));

em.getTransaction().commit(); em.close(); }

}

´´´´

resultado [Ljava.lang.Object;@1568159

1 resposta

Quando você percorrer o Resultset você que tem que definir a tipagem do valor que ele irá ler. É possível você ler tudo como uma string porque ele irá chamar o .toString() de cada valor, mas o contrário lancaria uma exceção pois ele tentaria fazer o parse de uma string num numérico, por exemplo.

Um exemplo pra percorrer o seu, considerando M o nome do resultset:

while(m.next()) {
    double a = m.getDouble("coluna1");
    String b = m.getString("coluna2");
}

Sendo "coluna1","coluna2" o nome que você definiu para as colunas da query que você executou (de preferência com alias)

E assim por diante