Olá Galera
Estou desenvolvendo um sistema, onde tenho a seguinte estrutura:
Pessoa 1-
-
-1 Endereco 1-
-
-N Telefones 1 — N TipoTelefone
Só para constar, estou utilizando Hibernate 3.1, Spring, Struts com MySQL.
Seguinte, a primeira parte onde instancio o objeto pessoa através dos dados recebidos do form e coloco na sessão e passo para o form de endereço e logo em seguinte após o termino do preenchimento eu salvo o objeto pessoa da seguinte forma;
endereco.setPessoa(pessoa);
pessoa.setEndereco(endereco);
daoPessoa.save(pessoa);
até aí tudo bem, o problema é na a fase de telefone, ou seja, acabei de persistir o objeto e logo em seguidaeu quero colocar vários telefones no endereço, e para isso tenho um mapeamento Set bem como um atributo telefones do tipo set dentro de Endereco e tudo mais e dentro de telefone eu tenho o atributo endereco e também tipo de telefone. Portanto para inserir os telefones dentro de endereços um faço uma pesquinsa onde o usuário deve localizar a pessoa que por consequência tem o endereço atrelado a esse objeto mais ou menos como o código abaixo:
Pessoa pessoa = daoPessoa.getPessoa(id);
Telefone fone = new Telefone();
fone.setNumero(numero);
fone.setEndereco(pessoa.getEndereco());
pessoa.getEndereco().getTelefones().add(fone);
daoPessoa.savePessoa(pessoa);
O problema é que não acontece nada, ou seja, não salva e não dá erro algum.
As dúvidas começam agora, quanto faço a busca do objeto pessoa eu obtenho o registro correto da pessoa bem como o endereco e tudo mais, mais acaso eu faça o seguinte código os valoes do objeto endereço não são copiados para o outro objeto como segue:
Endereco endereco = pessoa.getEndereco();
O novo objeto endereço não tem seus atributos atualizados, ou seja, por exemplo o atributo logradouro não recebe o valor do pessoa.getEndereco().getLogradouro(), onde acho isso estranho, desde que o objeto endereco dentro de pessoa tem todos os atributos preenchidos.
Alguém sabe o que possa estar acontecendo?