Como fazer relacionamento 1xN fazendo a FK ser PK também?

Opa pessoal,

É 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;

Olá!

Dê uma olhada nestes tópicos, fiz algumas perguntas que talvez te ajude.
http://www.guj.com.br/posts/list/139085.java
http://www.guj.com.br/posts/list/134922.java

At.
Wallfox

Ainda não consegui resolver isso :x

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…