Soma de valores- [Resolvido]

9 respostas
joaoimporta

Galera estou criando um projeto e estou na dúvida de como somar os valores, consigo somar pelo hibernate fazendo uma consulta, porém acho desnecessário,
Criei um método getTotal, porém ele retorna 0;

public class ProdutoForm {

private List<Produto> valores = new ArrayList<>();


public List<Produto> getValores() {
	return valores;
}

public void setValores(List<Produto> valores) {
	this.valores = valores;
}

public BigDecimal getTotal(){
	return valores.stream().map(Produto::getValor).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
}
}

@Entity

public class Produto {
private BigDecimal valor;


public BigDecimal getValor() {
	return valor;
}

public void setValor(BigDecimal valor) {
	this.valor = valor;
}

}

9 Respostas

E

muda pra .reduce(BigDecimal.ZERO, BigDecimal::add) e tira o orElse, é pra funcionar… a menos que sua lista esteja vazia …

joaoimporta

Troquei e mesmo assim retornou 0, eu estou criando uma List lá, eu tenho um contéudo na tela.
Acho que vou ter que criar outro select SUM mesmo.

E

vc debugou se sua lista está com valores no momento que passa pelo get?

pq testei aqui usando um exemplo com Arrays.asList(new Big…) e funciona normal isso.

joaoimporta

Sim dei um syso no toString e está vindo null também
Produtos [nome=null, Categoria=null, pedido=null, loja=null, rastreio=null, valor=null].

Quando eu crio um listar no dao, ele já deveria popular a entidade certo ?

E

Como está seu método listar no dao?

joaoimporta
public List<Produto> finalizados() {

	return manager.createQuery("select p from Produto p where p.status like :status", Produto.class).setParameter("status", Status.FINALIZADA).getResultList();
}
E

rodando a query gerada no banco, existe registros? o.O

meio estranho essa situação. Creio q o problema não esteja no seu get em si.
Parece ser no retorno dos dados pelo banco msm …

joaoimporta

Sim normal, vou te passar o projeto pelo github

joaoimporta

Resolvi, eu vaciliei estava buscando uma lista vazia.

Criado 11 de setembro de 2017
Ultima resposta 14 de set. de 2017
Respostas 9
Participantes 2