Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Movimentação não funciona no Postgresql

Pessoal, seguinte. Nesse curso estou usando o POSTGRESQL. Na criação da entidade conta funcionou de boa. Mas quando foi pra aula 4 e criei a entidade Movimentação, não aceito. Seque o código de Movimentação.java

package br.com.samuel.financas.modelo;

import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Calendar;

@Entity
@SequenceGenerator(name = "SEQ_MOV", sequenceName = "SEQ_MOV", initialValue = 1)
public class Movimentacao {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_MOV")
    private Integer id;

    private BigDecimal valor;

    @Enumerated(EnumType.STRING)
    private TipoMovimentacao tipo;

    @Temporal(TemporalType.TIMESTAMP)
    private Calendar data;

    @ManyToOne
    private Conta conta;

    private String descricao;

    public Integer getId() {
        return id;
    }

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

    public BigDecimal getValor() {
        return valor;
    }

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

    public TipoMovimentacao getTipo() {
        return tipo;
    }

    public void setTipoMovimentacao(TipoMovimentacao tipo) {
        this.tipo = tipo;
    }

    public Calendar getData() {
        return data;
    }

    public void setData(Calendar data) {
        this.data = data;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Conta getConta() {
        return conta;
    }

    public void setConta(Conta conta) {
        this.conta = conta;
    }

}

Quando rodo o TesteJPARelacionamento:

package br.com.samuel.financas.teste;

import br.com.samuel.financas.modelo.Conta;
import br.com.samuel.financas.modelo.Movimentacao;
import br.com.samuel.financas.modelo.TipoMovimentacao;
import br.com.samuel.financas.util.JPAUtil;

import javax.persistence.EntityManager;
import java.math.BigDecimal;
import java.util.Calendar;

public class TesteJPARelacionamento {
    public static void main(String[] args){
        Conta conta = new Conta();
        conta.setAgencia("0102");
        conta.setBanco("Itaú");
        conta.setNumero("12345");
        conta.setTitular("Pablo Escopar");

        Movimentacao movimentacao = new Movimentacao();
        movimentacao.setData(Calendar.getInstance());
        movimentacao.setDescricao("Churrascaria");
        movimentacao.setTipoMovimentacao(TipoMovimentacao.SAIDA);
        movimentacao.setValor(new BigDecimal("200.0"));

        movimentacao.setConta(conta);

        EntityManager em = new JPAUtil().getEntityManager();
        em.getTransaction().begin();

        em.persist(conta);
        em.persist(movimentacao);

        em.getTransaction().commit();
        em.close();
    }
}

Eu recebo que o hiberneito diz que seq_mov não existe

3 respostas

Tem que criar a sequence "seq_mov" no seu banco.

solução

Então, aconteceu um trem muito doido. Quando executei a classe TesteJPARelacionamento o Hibernate reclamou que não existia o seq_mov. Aí eu fui lá e criai manualmente no banco. Blz! Rodei de novo, só que agora ele reclamou que não existia a relação movimentacao. Que disgrama!! Resolvi alterar minha persistence.xml na seguinte propriedade:

<property name="hibernate.hbm2ddl.auto" value="update" />

Mudei para :

<property name="hibernate.hbm2ddl.auto" value="create-drop" />

Aí funciona !!! Eu hein :(

O git me precou uma peça aqui e deixou meu persistence.xml setado com usuário errado