[RESOLVIDO] ManyToOne FK também é PK

11 respostas
F

Boa tarde pessoal, estive pesquisando e não achei uma solução ainda:

Tenho uma classe de pedido e outra de pedido_item.
Na classe Pedido, tenho uma PK chamada de idPedido.

Como posso fazer para que a FK na classe Pedido_Item tambem seje minha PK?

Obs: Relacionamento é ManyToOne, pois um pedido tem varios itens…

Obrigado

11 Respostas

E

Cara, vc esta usando o Netbeans ??

F

Olá

Estou utilizando eclipse + hibernate + JSF

E

Costumo fazer o seguinte, crio as chaves primaria das tabelas e as forenkey no banco de dados e depois eu importo no netbeans…funciona a mesma coisa para o eclipse…

F

O que é esse “importo”? engenharia reversa?

Rodrigo_Sasaki

um relacionamento @ManyToOne também pode ser anotado com @Id sem problema. já tentou fazer isso do lado do Item?

F

Na verdade isso não tentei fazer.

Vou implementar e aviso qualquer coisa.

Muito Obrigado

F

Funcionou perfeitamente…

Outra duvida, o que exatamente o @PrimaryKeyJoinColumn faz?

Rodrigo_Sasaki

A anotação @PrimaryKeyJoinColumn está relacionada com herança entre entidades.

Vamos supor que você tem uma entidade Pessoa e sua PK é o atributo idPessoa
@Entity
@Table(name = "PESSOA")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorValue("P")
public class Pessoa{
	
	@Id
	private long idPessoa;

}
E uma entidade estende de Pessoa, como PessoaFisica. Você usa o PrimaryKeyJoinColumn para dizer qual atributo da classe filha que contém o valor da PK, caso nenhum seja especificado, é deduzido que o nome do atributo é o mesmo da classe pai, mas pra ficar o exemplo, vamos dizer que o nome é idPessoaFisica, aí ficaria assim:
@Entity
@Table(name = "PESSOAFISICA")
@DiscriminatorValue("PF")
@PrimaryKeyJoinColumn(name = "idPessoaFisica")
public class PessoaFisica extends Pessoa{
	
	@Id
	private long idPessoaFisica;
	
}
Entendeu?
F

Entendi sim.

Muito obrigado.

Estive procurando na net, algum manual das anotações que o hibernate tem,
por acaso tu não saberia se existe algum site que descreva essas anotações?

Rodrigo_Sasaki

Bom, a própria API me ajuda bastante :slight_smile: No seu caso a explicação está toda lá, só que em inglês

http://docs.oracle.com/javaee/6/api/javax/persistence/PrimaryKeyJoinColumn.html

F

Sem problemas,

Resolvido então.

Muito obrigado

Criado 15 de maio de 2013
Ultima resposta 15 de mai. de 2013
Respostas 11
Participantes 3