Pessoal estou aprendendo o Hibernate e agora esbarrei na questão da herança. Em meu exemplo tenho uma classe Visitante que herda de Pessoa que está ligada a endereco… os dados de visitante são salvos em membro e os dados de pessoa em pessoa, mas o java esta montando o insert errado.
Se puderem ajudar um java newbeeeeee esforçado agradeço muito!!!
Gera assim:
Deveria Gerar assim:
Minhas classes estão assim:
@MappedSuperclass
public class Pessoa {
@Id
@GeneratedValue
protected Integer numeroPessoa;
@Column(nullable=false, length=250)
protected String nome;
@Enumerated(EnumType.STRING)
@Column(nullable=false)
protected Sexo sexo;
protected EstadoCivil estadoCivil;
@Temporal(TemporalType.DATE)
@Column(nullable=false)
protected Date dataNascimento;
protected String nomeMae;
@Column(length=11)
protected String cpf;
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name="numeroEndereco")
protected romulor2.igrejaonline.bel.igreja.Endereco enderecoPessoa;
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name="numeroInstituicao")
protected romulor2.igrejaonline.bel.igreja.Instituicao instituicaoPessoa;
...
}
@Entity
public class Endereco {
@Id
@GeneratedValue
private Integer numeroEndereco;
@Column(nullable=false, length=20)
private String numero;
@Column(length=255)
private String complemento;
@Column(length=10)
private String telefone;
@Column(length=10)
private String celular;
@ManyToOne
@JoinColumn(name="idcep")
private romulor2.igrejaonline.bel.igreja.Cep cepEndereco; //Publico pois seus gets e sets estao em cep
//Referencias feitas em outras tabelas
@OneToOne(mappedBy="enderecoPessoa", fetch=FetchType.LAZY)
private romulor2.igrejaonline.bel.igreja.Pessoa pessoaEndereco;
@OneToOne(mappedBy="endereco", fetch=FetchType.LAZY)
private romulor2.igrejaonline.bel.igreja.Instituicao instituicaoEndereco;
...
}
@Entity
@Table(name="membro")
@Inheritance(strategy= InheritanceType.TABLE_PER_CLASS)
public class Visitante extends Pessoa {
@Temporal(TemporalType.DATE)
@Column(nullable=false)
protected Date dataPrimeiraVisita;
@Temporal(TemporalType.DATE)
@Column(nullable=false)
protected romulor2.igrejaonline.util.lists.Status situacaoMembro;
...
}