Hibernate + Herança + Classe Abstrata como fazer o annotation?

1 resposta
P

Pessoal, boa tarde!
Estou com a seguinte dúvida: Tenho uma classe abstrata Pessoa e duas classes filhas, aluno e Funcionário. O eles estão herdados vários atributos (Id, Nome, Endereço, Telefone, etc.). Estou usando anotation e qro criar duas tabelas no MySql (Aluno e Funcionario):
Segue: as classe

public abstract class Pessoa {

private Long id;

private String nome;

private String email;

private String fone;

private String rg;

private String emissorRG;

private String endereco;

private GregorianCalendar dataNascimento;

//gets e sets
}

@Entity(name = “tbl_aluno”)
public class Aluno extends Pessoa {

@Column(name = "situacao", nullable = false)
private Situacao situacao;
@Column(name = "FicouSabendo")
@Lob
private String ficouSabendo;
@Column(name = "formaPagamento", nullable = false)
private FormaPagamento formaPagamento;
//gets e sets

}

@Entity(name = "tbl_funcionario)

public class Funcionario {

@Column(name = matFuncionario, nullable = false)

private String matricula;

@Column(name = loginFunc, nullable = false)

private String login;

@Column(name = senhaFunc, nullable = false)

private String senha;

@Column(name = funcao, nullable = false)

private String funcao;

//gets e sets

}

perunta:
Eu não qro gerar a tabela pessoa mas, qro gerar aluno e funcionário. Já que eles tem vários atributos herdados como faço para fazer o anotation, ou seja, gerar uma tabela com os atributos herdados da superclasse? Haja vista que não tenho a necessidade de criar uma tabela pessoa (essa classe nunca será instanciada)?

1 Resposta

V
Tenta isto aqui:
@MappedSuperClass
public abstract class Pessoa { ... }

// classe Aluno
@Entity(name = "tbl_aluno") 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
@AttributeOverrides(value={
		@AttributeOverride(name="nome",column=@Column(name="nome")),
		@AttributeOverride(name="email",column=@Column(name="email"))
		..... (fazer para todos os atributos herdados)
})
public class Aluno extends Pessoa { .. }
mesma coisa para a classe Funcionário..

acho q isso resolve, testa aí.

Criado 14 de dezembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 1
Participantes 2