Herança com Hibernate

2 respostas
pedrovds

Boa Tarde,

Pessoal,

Estou tento um problema para implementar uma herança no meu código, o problema é o seguinte:

Eu tenho uma classe abstrata Pessoa que está mapeada da seguinte maneira:

@MappedSuperclass
public abstract class Pessoa{

   protected String nome

   @Id
   protected String CPF
   ...
}

A partir daí, tenho duas classes que extendem Pessoa (Cliente e Funcionario) que estão mapeadas da seguinte maneira:

@Entity
@Inheritance(strategy  = InheritanceType.TABLE_PER_CLASS)
public class Cliente{
   ...
   ...
}
@Entity
@Inheritance(strategy  = InheritanceType.TABLE_PER_CLASS)
public class Funcionario{
   @Id
   @GeneratedValue
   protected int matricula
   ...
}

Ou seja, para Cliente está funcionando normal, a chave primária que ele cria no banco é realmente CPF, mas no caso de Funcionario, eu quero que a chave primária seja Matricula e não CPF como está herdando da classe Pessoa.

Alguém aí sabe se tem alguma forma diferente de fazer o mapeamento para que atenda o que eu estou querendo!?

Valeu!

2 Respostas

feltraco

da uma olhada nessa annotation

@AttributeOverride

mas acho q o melhor msm seria deixar cada ID na sua classe nao expecificar na abstrata.

FLwS

pedrovds

Pois é… Eu consegui resolver assim mesmo!

Tirei o @Id da classe Pessoa e coloquei nas classes filhas.

Porém, me surgiu outra dúvida:
Em Cliente eu não tenho declarado o atributo CPF, que seria o @Id, pois ele é definido em Pessoa.

Consegui resolver isso sobrescrevendo o método getCPF() na classe Cliente e colocando a annotation @Id em cima do método.

De qualquer forma, valeu pela ajuda!

Criado 27 de novembro de 2008
Ultima resposta 27 de nov. de 2008
Respostas 2
Participantes 2