Salvar collection no Hibernate

E ai pessoal, blz?

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.

Objeto Principal

@Entity
@SequenceGenerator(name = "SQ", sequenceName = "sq_person")
@Table(name = "person")
public class PersonVO extends AbstractVO {

...

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "SQ")
	public Integer getId() {
		return id;
	}

...

	@OneToMany(mappedBy = "person", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	public Set<AddressVO> getAddresses() {
		return addresses;
	}

	public void setAddresses(Set<AddressVO> address) {
		this.address = address;
	}

}

Objeto Filho

@Entity
@Table(name = "person_address")
@SequenceGenerator(name = "SQ", sequenceName = "sq_person_address")
public class AddressVO extends AbstractVO {

...

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "SQ")
	public Integer getId() {
		return id;
	}

...

	@ManyToOne (cascade = CascadeType.ALL )
	public PersonVO getPerson() {
		return person;
	}

	public void setPerson(PersonVO person) {
		this.person = person;
	}

}

O meu persiste a coleção mais na inclusão ele não grava o id do pai, vc consegue gravar o id do pai?

[s]
baiano

esse é o problema, quando faço a persistencia, não está funcionando nem inclusão nem exclusão, só alteração…

Se eu excluir 5 objetos da collection, salvar…
ele não faz o delete… :frowning:

E se eu inlcuir objetos sem Id, salvar,
ele tbm não está fazendo o insert

não esqueçe de me enviar algo caso alguem responda, passei o dia todo hoje e necas…

baaaaaa

ta dose…

talvez esse link possa ajudar vcs.

http://forum.hibernate.org/viewtopic.php?t=969215

flw

Resolvi o insert e o Update:
Vi que na maioria dos exmplos, não havia o cascadeType no objeto filho, apenas no objeto principal ( o q tem collection)

 	@OneToMany(mappedBy = "person", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
 	public Set<AddressVO> getAddresses() {
 		return addresses;
 	}
...
 	@ManyToOne
 	public PersonVO getPerson() {
 		return person;
 	}
 

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.

manda pra mim o seu exemplo…

se puder claro…

to ainda apanhando

george.ba.fsa@gmail.com
george.queiroz.topway@bicbanco.com.br

tks