2
respostas

Nao consigo chegar no resultado Hibernate

Galera estou testando aqui mais não consigo chegar no resultado, adicionando a conta no banco de dados está dando, depois vo adicionar a movimentação ele adiciona, com um porem na movimentação queria colocar metodos de sacar transferencia e depositar, o código está rodando só que não adiciona por exemplo, meu metodo depositar não adiciona dinheiro nenhum no meu banco de dados de conta, oque que estou errando? Quando coloco o metodo na classe conta ele faz o deposito e aparece no banco, mas no movimentaçao não :(

import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Conta {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    protected double saldo;
    private BigDecimal limite;
    private String titular;
    @Temporal(TemporalType.DATE)
    private Calendar data;

    public Conta() {

    }
    public Conta(String titular, BigDecimal limite) {
        this.titular = titular;
        this.limite = limite;
    }



    public void setLimite(BigDecimal limite) {
        this.limite = limite;
    }

    public void setTitular(String titular) {
        this.titular = titular;
    }
    public void setData(Calendar data) {
        this.data = data;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public double getSaldo() {
        return saldo;
    }
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
    public BigDecimal getLimite() {
        return limite;
    }
    public String getTitular() {
        return titular;
    }
    public Calendar getData() {
        return data;
    }


}
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Movimentacao {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @ManyToOne
    private Conta conta = new Conta();

    public void depositar(double valor) {
        if (valor <= 0) {
            throw new IllegalArgumentException("ERRO");
        } else {
            this.getConta().saldo += valor;
        }
    }

    public void sacar(double valor) {
        if(valor <= 0 || valor < this.getConta().getSaldo()) {
            throw new IllegalArgumentException("ERRO");
        } else {
            this.getConta().saldo -= valor;
        }
    }    

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Conta getConta() {
        return conta;
    }

    public void setConta(Conta conta) {
        this.conta = conta;
    }
}
import javax.persistence.EntityManager;

import br.com.bercalini.banco.modelo.Conta;
import br.com.bercalini.jpa.JPAUtil;

public class TestaConta {
    public static void main(String[] args) {

        Conta conta = new Conta();
        conta.setTitular("TESTE");
        conta.setData(Calendar.getInstance());
        conta.setLimite(new BigDecimal(700.0));



        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        em.persist(conta);
        em.getTransaction().commit();
        em.close();
    }
}
import javax.persistence.EntityManager;

import br.com.bercalini.banco.modelo.Conta;
import br.com.bercalini.banco.modelo.Movimentacao;
import br.com.bercalini.jpa.JPAUtil;

public class TestaMovimentacao {
    public static void main(String[] args) {

        Movimentacao movimentacao = new Movimentacao();
        movimentacao.depositar(700.0);

        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        Conta c = em.find(Conta.class, 1);
        movimentacao.setConta(c);
        em.persist(movimentacao);
        em.getTransaction().commit();
        em.close();
    }
}
2 respostas

Consegui mesmo assim obrigado!

Olá, você está depositando antes de ter uma conta na tua movimentação.

Teste isso:

public class TestaMovimentacao {
    public static void main(String[] args) {

        Movimentacao movimentacao = new Movimentacao();

        EntityManager em = new JPAUtil().geEntityManager();
        em.getTransaction().begin();
        Conta c = em.find(Conta.class, 1);
        movimentacao.setConta(c);
        movimentacao.depositar(700.0);
        em.persist(movimentacao);
        em.getTransaction().commit();
        em.close();
    }
}