0
respostas

Persistência da conta

Estou utilizando o atributo cascade = CascadeType.ALL das anotações de relacionamento, porém persistiu tudo normalmente, mas faltou o cliente, como eu implementaria? sei que precisaria ser um relacionamento bidirecional, pois todos que estamos fazendo é unidirecional creio que ele deveria estar persistindo, mas isso não esta ocorrendo.

@Entity
public class Conta {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private Integer agencia;
    private Integer numero;
    private String titular;
    private Double saldo;
    @OneToOne(cascade = CascadeType.ALL)
    private Cliente cliente;


@Entity
public class Cliente {

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

    private String nome;
    private String profissao;
    private String endereco;

    @JoinColumn(unique = true)
    @OneToOne(cascade = CascadeType.ALL)
    private Conta conta;

    public Conta getConta() {
        return conta;
    }

public class TestandoRelacionamentos {
    public static void main(String[] args) {
        Cliente cliente = new Cliente();
        cliente.setNome("Elayne");
        cliente.setEndereco("radialista Jota monteiro, 50");
        cliente.setProfissao("professora");

        Conta conta = new Conta();
        conta.setAgencia(874964121);
        conta.setNumero(5464132);
        conta.setSaldo(300.00);
        conta.setTitular(cliente.getNome());
        cliente.setConta(conta);

        Categoria categoria = new Categoria("Viagem");
        Categoria categoria2 = new Categoria("Lanche");

        Movimentacao mov = new Movimentacao();
        mov.setCategoria(Arrays.asList(categoria, categoria2));
        mov.setConta(conta);
        mov.setData(LocalDateTime.now());
        mov.setDescricao("Compra de comida na Bélgica");
        mov.setTipoMovimentacao(TipoMovimentacao.SAIDA);
        mov.setValor(new BigDecimal(200));

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin();

        em.persist(mov);

        em.getTransaction().commit();


    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software