É o seguinte, como traduzo esse DER para o mapeamento do Hibernate?
(A FK tem que ser PK também na tabela filha)
O que tentei (e não deu certo):
@Entity
public class Livro {
@Id
private int idLivro;
private String titulo;
@Entity
public class Edicao {
@Id
private int numeroEdicao;
private int ano;
@Id
@ManyToOne
@PrimaryKeyJoinColumn(name = "idLivro", referencedColumnName = "idLivro")
private Livro livro;
Mas na minha pesquisa, acabei descobrindo como se faz uma chave composta.
Fica aí pro pessoal:
@Embeddable
public class EdicaoChaveComposta implements Serializable{ //tem que implementar Serializable
private int idEditora;
private int idEdicao;
//getters e setters.
//implementar tambem equals() e hashCode() por guardar chaves primarias
}
@Entity
public class Edicao {
private EdicaoChaveComposta chaves;
private int ano;
@Id
public EdicaoChaveComposta getChaves() {
return chaves;
}
}
Isso te gera uma tabela Edicao com duas chaves primárias (idEditora e idEdicao) e uma coluna (que nao é chave) ano.
Bem, pelo que eu saiba é exatamente isso que você deve fazer. Criar uma Classe que represente a PK composta da Classe “Edicao” (EdicaoPK, por exemplo) e referencia-la na classe Edicao.
Então como assim, “não resolveu” ainda ? A solução tá ai…