2
respostas

Error ao atribuir o valor de um SingleResult a uma variavel Long (Qual a melhor pratica porque apresenta error?

Long v1 = new Long(0); Long v2 = new Long(0); Long total; BigDecimal retornoTotal; Query query1 = entityManager.createNativeQuery("Select vlr from produto where id = 1"); Query query2 = entityManager.createNativeQuery("Select vlr from produto where id = 2");

v1 = (Long) query1.getSingleResult(); v2 = (Long) query2.getSingleResult();

total = v1 + v2; retornoTotal = new BigDecimal(total); return retornoTotal;

2 respostas

Qual o log de erro, exception? Seu código está confuso!

Contudo, o que faz quando se quer fazer o que você pretende fazer, é: retornar os objetos do banco e fazer as opções com os atributos dele. Por exemplo, se você deseja somar um valor de uma compra, busque todos os produtos dessa compra e some os valores. Não buscar apenas o valor.

Long v1 = new Long(0);
 Long v2 = new Long(0);
 Long total;
 BigDecimal retornoTotal;
 Query query1 = entityManager.createNativeQuery("Select vlr from produto where id = 1"); 
Query query=entityManager.createNativeQuery("Select vlr from produto where id = 2");

v1 = (Long) query1.getSingleResult();
 v2 = (Long) query2.getSingleResult();

total = v1 + v2; retornoTotal = new BigDecimal(total); return retornoTotal;

Qual erro que dá para você? talvez a não seja possivel fazer um CAST com a variavel v1 da Classe Long, com o retorno da sua query, até porque você está tentando passar o valor dos produtos para LONG, LONG pelo oque eu sei só aceita numeros, e não pontos como o BigDecimal, posso estár enganado mais acho que o erro é esse, tendeu? pelo oque vi você quer somar o valor das variavel e ver o total dos produtos, porque você já não passa isso na própria query?

Algo como.

public Double valorTotal() {
Query query = manager.createQuery("Select sum(p.valorProduto) from Produto p").getSingleResult; 
return (Double) query;
}

Aqui já ja irá retornar todos os valor somado dos produtos do seu banco de dados.