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();
}
}