Olá,
Estou criando um relacionamento entre três tabelas (pessoas IS-A alunos e pessoas IS-A professores), porém quando o hibernate vai gerar as tabelas ele não está gerando uma tabela para cada entidade e sim uma tabela única (pessoas) para todas, colocando os atributos de alunos e professores em pessoas. Gostaria de saber como eu faço para especificar que quero uma tabela para cada entidade.
Pessoa.java
[code]import javax.persistence.*;
@Entity
@Table(name = “pessoas”)
@SequenceGenerator(name = “pessoas_sequence”, sequenceName = “pessoas_id_seq”, allocationSize = 1)
public class Pessoa {
@Id
@Column(name="id", nullable=false)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pessoas_sequence")
protected int id;
@Column(name="nome", nullable=false)
protected String nome;
@Column(name="email", nullable=false)
protected String email;
@Column(name="telefone", nullable=false)
protected String telefone;
@OneToOne(cascade=CascadeType.ALL)
private Endereco end;
public Endereco getEnd() {
return end;
}
public void setEnd(Endereco end) {
this.end = end;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public int getId() {
return id;
}
private void setId(int id) {
this.id = id;
}
}
[/code]Professor.java
[code]import java.util.Set;
import javax.persistence.*;
@Entity
@Table(name=“professores”)
@PrimaryKeyJoinColumn(name=“Pessoa.id”)
public class Professor extends Pessoa {
@Column(name="titulo", nullable=false)
private String titulo;
@OneToMany(cascade=CascadeType.ALL)
private Set<Turma> turmas;
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
}[/code]Aluno.java
[code]import java.util.Set;
import javax.persistence.*;
@Entity
@Table(name=“alunos”)
@PrimaryKeyJoinColumn(name=“Pessoa.id”)
public class Aluno extends Pessoa {
@Column(name="matricula",nullable=false)
private String matricula;
@ManyToMany(cascade=CascadeType.ALL)
private Set<Turma> turmas;
public Set<Turma> getTurmas() {
return turmas;
}
public void setTurmas(Set<Turma> turmas) {
this.turmas = turmas;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
}[/code]