estou tendo problemas com o hibernate, no caso eu tenho 3 tabelas no meu banco de dados que sao: cliente, funcionario e endereco.
o meu problema eh q tanto a tabela funcionario como cliente referencia endereco, o problema acontece de quando eu vou recuperar algum desses objetos ele nao recupera o endereco corretamente, apenas pela ID do cliente se for 3 ele recupera o endereco com id 3, mas nem sempre vai ser igual, ja que tem funcionario pode ter adicionado antes, entenderam? como faco pra corrigir isso?
o relacionamento esta OneToOne, na tabela cliente como funcionario tem um campo Endereco_ID, do qual so fica null mesmo eu adicionando um objeto de endereco atravez do metodo set tanto em cliente como em endereco, tb tem o campo ID que eh o campo principal, se o id do objeto cliente q eu kiser deletar for 5, ele deleta o endereco com o id 5 tb, mas nem sempre vai ser igual, e ele deleta o errado.
bem, aquele erro nao existe mais nesse codigo q postei, pois nao posso compartilhar as mesmas fk se nao acaba acontecendo o problema ja mencionado, o erro q acontece agora, eh q o campo Endereco_ID fica sempre 0, oque era pra ficar com o id do objeto endereco, oq acontece eh q nao consigo mais deletar pois ele nao axa o objeto relacionado com o id 0 q nao existe, como faco pra consertar isso?
estou enviando o codigo mysql tb caso ajude, mas axo q o erro nao esta aq
CREATE TABLE endereco (
ID INTEGER NOT NULL,
rua VARCHAR(100) NULL,
numero INTEGER NULL,
complemento VARCHAR(20) NULL,
bairro VARCHAR(30) NULL,
cidade VARCHAR(30) NULL,
estado CHAR(2) NULL,
PRIMARY KEY(ID)
);
CREATE TABLE colaborador (
ID INTEGER NOT NULL,
Endereco_ID INTEGER NOT NULL,
nome VARCHAR(45) NOT NULL,
dataEntradaIES VARCHAR(10) NOT NULL,
IES VARCHAR(45) NOT NULL,
telefone INTEGER NULL,
celular INTEGER NULL,
email VARCHAR(100) NULL,
pagPessoal VARCHAR(200) NULL,
areaInteresse VARCHAR(255) NOT NULL,
areaAtuacao VARCHAR(255) NOT NULL,
curriculo VARCHAR(255) NULL,
funcao VARCHAR(45) NOT NULL,
trabalhosRealizados TEXT NULL,
projetos VARCHAR(200) NULL,
PRIMARY KEY(ID),
FOREIGN KEY(endereco_ID)
REFERENCES endereco(ID)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
minha duvida eh a seguinte, qd eu adiciono um novo cliente ou funcionario(colaborador) ele sempre adiciona no campo endereco_ID o valor 0,era pra ficar o valor ID d endereco, como faco isso?
aff cara, se nao ksier ajudar nao atrapalha, to ate agora tentando aq, lendo as referencias dos annotations do hibernate q eu peguei e nao to conseguindo, to lendo hibernate in action, me ajudaram mt, mas so falta isos pra mim e nao to conseguindo.
olha só, crie o relacionamento tanto do pai para o filho quanto o inverso, e no filho na insersão vc coloca o proprio pai dentro dele que vai funcionar, aqui fiz assim e esta rodando.