Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Id da tabela categoria errado ?

Rodei a classe TesteMovimentacoesComCategoria e os registros do campo id na tabela categoria ficaram 3 e 4. Não era pro id ser 1 e 2?

print do "select * from categoria":

https://imgur.com/8I6x8KF

Achei estranho isso. E aí pessoal, isso está certo? Obrigado.

@Entity
public class Movimentacao {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;

    private BigDecimal valor;

    @Enumerated(EnumType.STRING)
    private TipoMovimentacao tipo;

    @Temporal(TemporalType.TIMESTAMP)
    private Calendar data; 

    private String descricao; 



    @ManyToMany
    private List<Categoria> categoria; 


    //Muitas movimentações para uma conta => @ManyToOne
    @ManyToOne
    private Conta conta;

    public Integer getId() {
        return id;
    }

//...

@Entity
public class Categoria {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id; 
    private String nome;


    @Deprecated // pesquisar essa anotation 
    public Categoria() {

    }

    public Categoria(String nome) {
        this.nome = nome;
    }

    public Integer getId() {
        return id;
    }

//...

@Entity
public class Conta {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id; 
    private String titular;
    private String numero; 
    private String banco;
    private String agencia;



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

//...

public class TesteMovimentacoesComCategoria {

    public static void main(String[]args) {

        Categoria categoria1 = new Categoria("Viagem");
        Categoria categoria2 = new Categoria("Negocios");

        Conta conta = new Conta();
        conta.setId(1);


        Movimentacao movimentacao1 = new Movimentacao();
        movimentacao1.setData(Calendar.getInstance());
        movimentacao1.setDescricao("Viagem à SP");
        movimentacao1.setTipo(TipoMovimentacao.SAIDA);
        movimentacao1.setValor(new BigDecimal("100.0"));
        movimentacao1.setCategoria(Arrays.asList(categoria1, categoria2)); //pesquisar!!!!

        movimentacao1.setConta(conta);

        Movimentacao movimentacao2 = new Movimentacao();
        movimentacao2.setData(Calendar.getInstance());
        movimentacao2.setDescricao("Viagem à RJ");
        movimentacao2.setTipo(TipoMovimentacao.SAIDA);
        movimentacao2.setValor(new BigDecimal("300.0"));
        movimentacao2.setCategoria(Arrays.asList(categoria1, categoria2)); //pesquisar!!!!!

        movimentacao2.setConta(conta);


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

        em.getTransaction().begin();

        em.persist(categoria1);
        em.persist(categoria2);

        em.persist(movimentacao1);
        em.persist(movimentacao2);

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

    }

}
2 respostas
solução!

Fala ai Robson, de boa ?

Se você já tiver rodado alguma vez, ele vai pegar o primeiro id válido para poder fazer a persistencia dos seus dados.

Obrigado, Matheus!