Como usar primary foreign key (PFK) em JPA/Hibernate? É possivel fazer isso?
Cara,
em JPA não conseguimos inserir uma referência @Id direto para minha classe foreign key, ou seja, a annotation @Id só pode ser utilizada para tipos primitivos e wrapper (java.lang.String; java.util.Date; java.sql.Date;).
No seu caso acho que terá que implementar um @Id com o mesmo tipo de retorno do @Id da foreign key que deseja fazer referência.
Então PFK em JPA num rola? Vc tem algum material sobre o assunto?
josimarsis,
Você encontrou resposta para a sua pergunta?
Estou trabalhando em um projeto e preciso usar PFK na JPA 2.
Agradeceria muito se alguém me ajudasse.
Encontrei a resposta sim, posto os exemplos no grupo até o dia 23/06/2011 (Próximo feriado), mais se vc já quiser dar uma pesquisada na net o que esta procurando é tratado no JPA como herança entre tabelas que são classificadas em 3 tipos:
InheritanceType.SINGLE_TABLE;
InheritanceType.JOINED;
InheritanceType.TABLE_PER_CLASS.
Já cheguei a implementar uma PK FK…
Você vai precisar de uma classe só para tornar a FK uma PK…
Pelo que eu entendi você quer fazer o seguinte
(FK FK) PK
1 1
1 2
2 1
2 1 – nao pode
xD~~
Sandro seguem 2 projetos feitos no Netbeans que exemplificam duas das 3 estratégias de herança existentes no JPA, tais exemplos foram feitos com base no curso que fiz no DevMedia. A estratégia de Herança TABLE_PER_CLASS não foi exemplificada porque esta é a estratégia padrão do JPA. Dentro da pasta de cada projeto existe um scritp para geração do banco de dados. As bibliotecas utilizadas formam: HIBERNATE_JPA e MYSQL JDBC DRIVER todas já existentes no netbeans. Ressalto que o que você precisa para resolver seu problema é a estratégia JOINED_TABLE.
Espero que isso ajude você e a galera do guj que tenha dúvida no assunto.
Olá josimarsis,
Só agora vi que você tinha respondido, foi mal. E agradeco pelos projetos.
Na realidade essa solução que você encontrou eu já conhecia, só que não pude usá-la pois a classe que tem a PFK precisa ser classe filha da classe PK, ou seja, faz uso de herança. E no meu caso eu utilizo composição.
A classe que tem a PFK , tem um atributo do tipo da classe que ela vai receber a PK. Por exemplo: Eu tenho a classe DadosPessoais e a classe Funcionario. Na classe Funcionario eu tenho um atributo do tipo DadosPessoais. Esse atributo do tipo DadosPessoais será a PFK. Depois de ler a documentação do hibernate, consegui chegar à solução. Se precisar do código eu posso postar aqui.
Posta o código ai. Vai ser útil para comunidade!