Dúvida em relacionamento e persistencia

9 respostas
Kleber-rr

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 eu disse antes, eu preciso add vários lancamentos dentro de um mesmo movimentofinanceiro, e não sei se estou fazendo o mapeamento correto.

Se alguem puder ajudar, agradeço!!

9 Respostas

H

Correto.
Apenas na entidade MovimentoFinanceiro, na linha 28 acho que deveria ser id_movimentofinanceiro.
E na entidade Lancamento, na linha 16, acho que ficaria melhor assim @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY).
Não sou especialista em hibernate e jpa, mas ja desenvolvi um projeto com esse relacionamento.

Kleber-rr

henriquejhc:
Correto.
Apenas na entidade MovimentoFinanceiro, na linha 28 acho que deveria ser id_movimentofinanceiro.
E na entidade Lancamento, na linha 16, acho que ficaria melhor assim @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY).
Não sou especialista em hibernate e jpa, mas ja desenvolvi um projeto com esse relacionamento.

Tranquilo. Tá ok. o que eu preciso agora, na verdade é criar um método que some todos os lancamentos de cada movimento… sabe como??

Valeu!

H

Esse “metodo” que você diz, seria uma consulta na base de dados?
Ou antes de persistir as entidade?

Kleber-rr

henriquejhc:
Esse “metodo” que você diz, seria uma consulta na base de dados?
Ou antes de persistir as entidade?

amigo, naum sei lhe dizer, pq eu nunca fiz nada parecido…
Agradeço sugestões!

Flws

marcelo.bellissimo

Eu acho que já respondi isso, não sei se foi pra você mesmo… faz um HQL, passando como SQL um “SUM” dos campos que você quer…

Kleber-rr

[quote=marcelo.bellissimo]Eu acho que já respondi isso, não sei se foi pra você mesmo… faz um HQL, passando como SQL um “SUM” dos campos que você quer…

Eae marcelao, blz??
mas para fazer esse hql, eu tenho q jogar a resposta em algum lugar né? entao, na minha tabela de movimentofinanceiro, eu devo criar um campo Double para receber essa soma??

marcelo.bellissimo

Não… essa soma é realizada dinamicamente na consulta… você só cria o atributo na sua Classe pra receber o valor dela, mas no banco não muda nada…

Kleber-rr

Mas digamos que eu queira gravar esse resultado no banco, é possível?? ou melhor, é necessário?

marcelo.bellissimo

Possivel sim, necessário não, justamente por ser um valor dinâmico que varia de acordo com o número de registros que você está somando… é algo que será calculado apenas pra usar “na hora”…

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