Somar valores de lançamentos em um movimento

3 respostas
Kleber-rr

Olá pessoal, é o seguinte: tenho 2 classes: 1 movimento e outra lancamento, que estao assim:
Olá pessoal, td bem??

Estou tentando fazer um movimento caixa em java, hibernate, mysql, etc...

Tenho uma classe movimento financeiro que deve conter vários lançamentos
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "movimentofinanceiro")
public class MovimentoFinanceiro {

	@Id
	@GeneratedValue
	@Column(name = "id_movimentofinanceiro")
	private Long id;

	@Temporal(TemporalType.DATE)
	@Column(name = "data_movimento")
	private Date data_movimento;

	@OneToMany(mappedBy = "movimentofinanceiro", fetch = FetchType.LAZY)
	private List<Lancamento> lancamentos = new ArrayList<Lancamento>();
E tenho uma classe lancamento que esta relacionada com a classe movimentofinanceiro
@Entity
@Table(name = "lancamento")
public class Lancamento {

	@Id
	@GeneratedValue
	@Column(name = "id_lancamento")
	private Long id;

	@Column(name = "descricao")
	private String descricao;

	@Column(name = "valor")
	private Double valor;

	@Column(name = "tipolancamento")
	private String tipolancamento;

	@ManyToOne
	@JoinColumn(name = "financeiro")
	private MovimentoFinanceiro movimentofinanceiro;

Como podem perceber pelo relacionamento, um movimento poderão (e terão) vários lancamentos. Eis o X da questão!!!
Eu não sei como devo somar os campos "valor" de todos os lancamentos de cada movimento.

Alguem tem alguma ideia, modelo, sugestão, exemplo... qq coisa ajuda.

Valeu!!!

3 Respostas

nel

Boa noite.

A solução é bem simples. Faça uma busca nos lançamentos pela chave da movimentação, esta busca vai lhe retornar uma lista que pode conter 0 até N lançamentos. A partir desta lista de retorno, podes efetuar um foreach e somar os valores. Isto resolve sua situação?

Edit: Está usando JPA não é? Dê uma pesquisada, talvez possa usar o SUM para lhe retornar o valor desta coluna, enfim, o que eu disse acima creio que resolve sua situação.

Abraços.

Kleber-rr

nel:
Boa noite.

A solução é bem simples. Faça uma busca nos lançamentos pela chave da movimentação, esta busca vai lhe retornar uma lista que pode conter 0 até N lançamentos. A partir desta lista de retorno, podes efetuar um foreach e somar os valores. Isto resolve sua situação?

Edit: Está usando JPA não é? Dê uma pesquisada, talvez possa usar o SUM para lhe retornar o valor desta coluna, enfim, o que eu disse acima creio que resolve sua situação.

Abraços.

Blz. vou dar uma mexida aki e em seguida posto o resultado. Valeu pela ajuda.

Kleber-rr

nel:
Boa noite.

A solução é bem simples. Faça uma busca nos lançamentos pela chave da movimentação, esta busca vai lhe retornar uma lista que pode conter 0 até N lançamentos. A partir desta lista de retorno, podes efetuar um foreach e somar os valores. Isto resolve sua situação?

Edit: Está usando JPA não é? Dê uma pesquisada, talvez possa usar o SUM para lhe retornar o valor desta coluna, enfim, o que eu disse acima creio que resolve sua situação.

Abraços.

nel, boa noite.

Estive lendo sobre SQL e criteria para ver se resolveria essa etapa.

Em SQL seria mais ou menos assim:

SELECT sum(valor) FROM `lancamento` WHERE tipolancamento='entrada' - SELECT sum(valor) FROM `lancamento` WHERE tipolancamento='saida'

Apesar desse código dar erro de síntase, eu ainda não consegui fazer a criteria disso…

Qualquer ajuda, agradeço.

Valeu.

Criado 2 de fevereiro de 2010
Ultima resposta 12 de fev. de 2010
Respostas 3
Participantes 2