0
respostas

Mesmo com @JoinColumn(unique=true) @OneToOne Está duplicando

O professor estava falando sobre não permitir a duplicação de clientes com mesmo id, mas a anotação não está funcionando.

Esse é o Cliente.java

package br.com.caelum.financas.modelo;

import javax.persistence.*;

@Entity
public class Cliente {

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

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

    @JoinColumn(unique=true)
    @OneToOne
    private Conta conta;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getProfissao() {
        return profissao;
    }
    public void setProfissao(String profissao) {
        this.profissao = profissao;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public Conta getConta() {
        return conta;
    }
    public void setConta(Conta conta) {
        this.conta = conta;
    }

}

E esse é o TestaContaCliente.java

package br.com.caelum.financas.teste;

import javax.persistence.*;

import br.com.caelum.financas.modelo.Cliente;
import br.com.caelum.financas.modelo.Conta;
import br.com.caelum.financas.util.JPAUtil;

@Table(uniqueConstraints={@UniqueConstraint(columnNames={"name"})})
public class TestaContaCliente {

    public static void main(String[] args) {

        Cliente cliente = new Cliente();
        cliente.setNome("Leonardo");
        cliente.setEndereco("Rua Fulano, 123");
        cliente.setProfissao("Professor");

        Cliente cliente2 = new Cliente();
        cliente2.setNome("Luiz");
        cliente2.setEndereco("Rua Fulano, 456");
        cliente2.setProfissao("ProfessorMais");

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

        cliente.setConta(conta);
        cliente2.setConta(conta);

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

        em.persist(cliente);
        em.persist(cliente2);

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

    }

}