Segui os passos mostrados na aula, mas ao tentar executar o programa com a anotação @JoinColumn(unique = true). Aparece o erro Exception in thread "main" java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;
Deletei o banco de dados e o criei novamente, mas não adiantou. Quando apenas comento a linha do JoinColumn e mantenho o resto: @OneToOne private Conta conta; o erro não aparece mais.
package br.com.alura.jpa.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@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
private Conta conta;
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
public Long getId() {
return id;
}
public void setId(Long 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;
}
}
package br.com.alura.jpa.testes;
import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence;
import br.com.alura.jpa.modelo.Cliente; import br.com.alura.jpa.modelo.Conta;
public class TestaRelacionamentoClienteConta {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("alura");
EntityManager em = emf.createEntityManager();
Conta conta = new Conta();
conta.setId(1L);
Cliente cliente = new Cliente();
cliente.setNome("Roberto");
cliente.setProfissao("professor");
cliente.setConta(conta);
em.getTransaction().begin();
em.persist(cliente);
em.getTransaction().commit();
em.close();
}
}