Relacionamento com herança no Hibernate

2 respostas
marciobarroso

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: ]

2 Respostas

GustavoTavone

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

kaoe

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

Criado 19 de maio de 2006
Ultima resposta 19 de mai. de 2006
Respostas 2
Participantes 3