Problemas com herança com o anotation (@MappedSuperclass)

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;

	...
}

Voce colocou o @Inheritance na classe errada :slight_smile: E o @MappedSuperclass tem outro proposito. O codigo abaixo deve funcionar:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Pessoa {}

@Entity
public class Visitante extends Pessoa  {}

Pra mais detalhes: http://docs.jboss.org/hibernate/annotations/3.4/reference/en/html_single/#d0e829

partenon,
Realmente sua dica foi útil. Apenas tive que acertar um detalhe trocando o InheritanceType para JOINED.