Estou com o seguinte problema, tenho uma relação 1:N (um para muitos), e dois objetos, onde o Objeto Principal, possui uma collection do segundo objeto.
Quando eu incluo ou excluo itens da collection no objeto principal e salvo o objeto principal, o hibernate não inclui ou exclui os objetos no banco de dados, porém se eu alterar um objeto existente na collection e salvar o objeto principal este é alterado corretamente no banco de dados.
Alguem sabe como posso resolver isso?
Segue abaixo meus objetos com as respctivas configurações.
Descobri pq nao estavamos consguindo pegar o Id. Mas o delete, nao está funcionando… vou fazer o controle do delete na mão. Update e Insert já vai me quebrar um galhão…
Veja que quando vc vai inserir, mesmo que o objeto nao tenha referencia, vc deve passar o objeto pai, no filho.
// Criar o objeto Principal
Pessoa pessoa = new Pessoa();
// Criar a Collection de enderecos
ArrayList<Endereco> enderecos = new ArrayList<Endereco>();
// Criar o objeto com primeiro endereco
Endereco endereco = new Endereco();
// Setar o objeto pessoa vazio
endereco.setPessoa(pessoa);
endereco.setRua("Rua 1");
// Adiciona o endereco na Collection
enderecos.add(endereco);
// Criar o objeto do segundo endereco
endereco = new Endereco();
// Setar o objeto pessoa vazio
endereco.setPessoa(pessoa);
endereco.setRua("Rua 2");
// Adicionar o segundo endereco na collection
enderecos.add(endereco);
// setar a collection de enderecos na pessoa
pessoa.setEnderecos(enderecos);
// Salvar a pessoa
SessionFactory.currentSession().saveOrUpdate(pessoa);
Qual a conclusão que cheguei, como a referencia para o objeto pessoa é a mesma, o hibernate primeiro salva o objeto princial (Pessoa) atualiza o Id e todas as referencias do objeto tbm serão atualizados, que é o caso do objeto pessoa que está atribuido aos enderecos.