Relacionamento com herança no Hibernate

Salve Galera !!!

Estou trabalhando em um sistema simples. Mas que agora surgiu uma dúvida não tão simples.

É um sistema de contatos internos de uma Cia.

A dificuldade e de fazer o relacionamento de 2 entidades. <Usuario> e <Contato>

Todos os funcionários da empresa são um Contato.

Todos os funcionários estaram cadastrados no BD, mesmo os que não usarem o sistema.

Após um funcionário solicitar o uso do sistema, será liberado o acesso e ele além de <Contato>, será também um <Usuario>.

Eu tentei relacionar estas duas entidades assim:

public class Contato{
	private Long id;
	private String nome;
	private String sobrenome;
	private Integer telefone;
	private Integer celular;
	private Integer fax;
	private String email;
	private String login;

	métodos get e set omitidos
}

public class Usuario{

	private Contato id;
	private String senha;

	métodos get e set omitidos
}

Só que a classe <Contato> não pode ser ao mesmo tempo um @Entity e um @Embeddable.

Entenderam ?!?

Então a partir do momento que o <Contato> cadastrar sua senha, ele passa a ser também um <Usuario>

No banco está exatamente como nas classes, com excessão da usuario que ao invés de um contato_id, tem somente um id.

A idéia seria quando cadastrar o usuario, relacionar o id do usuario como o mesmo id com contato e somente cadastrar a senha na tabela usuario.

Eu tenho uma 3 tabela que seria a que relacionaria as 2 entidades.

UsuarioContato
Campos : usuario_id e contato_id

Alguém poderia me dar uma opinião ou outra solução qto a esta forma de relacionamento ?!?

[ :smiley: ]

kra a descriçao da sua duvida ta meio complicada
mas pelo q eu entendi teria q fazer da seguinte forma
uma tabela terias os dados cadastrais do funci(contato)…

tb_Contato — teria: tb_usuarios
codigo, -------> PK codigo ------> pk
nome cod_contato —> PK, FK
tel
endereco
etc…

depois é so fazer um select da seguinte forma
Select u.cod_contato, c.nome, c.tel,c.endereco from tb_Contato c, tb_usuarios u

Faz Usuario extends Contato…!!! se vc usar persitencia tipo hibernate tem várias formas de poliformismo na documentação que podem te ajudar…