Estou tendo um problema com o hibernate 3… Eu tenho uma entidade A que possui uma lista da entidade B, quando eu coloco um novo elemento na lista B e atualizo A tudo certo… quando eu altero algum valor de um elemento da lista de b e atualizo A tudo certo… mais quando eu deleto um elemento da lista B ele não exclui… Ja tentei fazer um load antes de realizar o update e manipular a lista direto do PersistentSet… só que ai da um erro “Found two representations of the same collection”… Já tentei de tudo e nada… sera que alguem pode me dar uma luz???
Class A {
Set<B> bs;
@OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL, mappedBy ="a" )
public Set getB();
}
Class B {
A a;
@ManyToOne
@JoinColumn(name = "OID_A")
public A getA();
}
Para excluir os filhos eu só monto a nova lista sem o elemento qe vai ser deletado… seto no Pai e dou um session.update no pai… Eu já tentei tambem removendo o elemento da collection e dando update no pai… mais tb não adiantou…
Por exemplo
A a = session.load(A.class, id);
Set b = a.getBs();
b.remove(filho);
session.update(a);
Você vai ver que usar a opção do cascade=“all-delete-orphan”, assim se você remover um elemento da Lista e atualizar o Objeto que contém a lista, o Hibernate executará o DELETE.
Estou tendo o mesmo problema…
usei o “all-delete-orphan” e o erro que o hibernate passa é:
tenho um usuáio q tem uma lista de criterio, quando troco algum criterio ele deveria remover do banco os criterios q sairam da lista e atualizar os q eu mudei
A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: spc.dto.UsuarioDTO.listaCriterios
Bom, esse link está bloqueado aqui no trabalho, rs. mas resolvi aqui colocando o cascade pra “all”. não necessitava ser “all-delete-orphan”. mas vlw aee ! ;D