[Hibernate] Foreign Key com mapeamento de herança TABLE_PER_CLASS

Olá pessoal,

Estou com uma situação na qual gostaria de criar uma generalização entre classes que eram independentes. Para não apagar todas as tabelas e relacionamentos posteriores achei melhor usar o tipo de herança table per class, seria mais ou menos como o banco já está modelado hoje.
A minha dúvida é: Como relacionar essa tabela depois a uma outra de forma polimórfica. Ex: Imagine uma classe pessoa com heranças de pessoa física e jurídica e tenho uma outra classe, por exemplo documento, que teria uma pessoa (independente de qual tipo daí a necessidade do polimorfismo aqui). Como criar a chave estrangeira na tabela Documento para que ela se relacione com as duas tabelas PessoaFisica e PessoaJuridica e como mapear isso no hibernate para ficar com um só campo:

public class Documento{
        @ManyToOne
	@JoinColumn(name="idPessoa")//Aqui deveria entrar pessoa física e juridica
	private Pessoa pessoa;
}

Bom preciso saber se você criou um atributo no Pessoa igual coloquei a baixo…

@OneToMany(mappedBy = "documento") private List<Documento> listDocumentos;

Não

bom…

então vou postar como eu faço… ok?

ai depois vc adapta para seu jeito =)

[code]public class Documento{
@ManyToOne
private Pessoa pessoa;
}

public class Pessoa{

@OneToMany(mappedBy = "documento")
private List<Documento> listDocumento;

}[/code]

modifica assim e me diz o se da certo…

Não, mas eu preciso mapear a pessoa dentro do documento, um documento tem uma pessoa entendeu?
É aquele exemplo que eu citei acima mesmo, mas a questão é que eu preciso de uma chave estrangeira em um campo só mas que pode estar em duas tabelas diferentes.

Se é o que entendi… seria mais facil vc criar uma tabela com os dados comuns entre juridico e fisica que no caso seria o Pessoa… e dentro de Pessoa teria Juridico e Fisico… o Hibernate trabalharia bem fazendo assim… e voce colocaria somente as informações necessarias em suas respectivas tabelas…

bom é um sugestão…

ficaria algo mais ou menos assim… e voce nao precisaria mais usar herança;…

[code]public class Documento{
@ManyToOne
private Pessoa pessoa;
}

public class Pessoa{

@OneToMany(mappedBy = "documento")
private List<Documento> listDocumento;

     @OneToOne
     private Fisica fisica;

     @OneToOne
    private Juridica juridica;

}

public class Juridica{
@OneToOne
private Pessoa pessoa;

}

public class Fisica{
@OneToOne
private Pessoa pessoa;

}[/code]

Acho que não cara, daí eu perderia os beneficios da herança. Analisando aqui, acho que vou utilizar um InheritanceType.JOINED. Usei isso em outro projeto e acho que vai atender mais ou menos. De qualquer forma obrigado aew. Se alguem ai tiver alguma outra ideia…

bom achei isso para vc divirta-se =)

http://altieresm.wordpress.com/2011/07/09/implementando-heranca-com-hibernate/

e com o que vc queria =)

abraços

Blza, mas isso ai eu implementei, só que a ultima opção…
Daí a minha dúvida é como fazer a chave estrangeira de uma outra tabela para a pessoa. Veja que no ultimo exemplo são duas tabelas diferentes, entendeu?

A classe Pessoa é aonde tem a herança certo?
e em qual classe você quer chamar a classe Pessoa?
já sabe o tipo de relacionamento entre essas classes?