hibernate - Deleting a child entity in a One-To-Many relationship with inheritance throwing deleted entity passed to persist exception -
good morning.
i've been struggling problem 2 day's now. here model :
parent :
@entity @table(name="bandeira") @sequencegenerator(name = "sq_band_sq_bandeira", sequencename = "sq_band_sq_bandeira", allocationsize = 1) public class bandeira extends abstractentidade implements serializable { ... private list<observacaobandeira> itensobservacao = new arraylist<observacaobandeira>(); ... @onetomany(cascade = cascadetype.all, fetch = fetchtype.lazy, mappedby = "bandeira" ) @cascade(org.hibernate.annotations.cascadetype.delete_orphan) public list<observacaobandeira> getitensobservacao() { return itensobservacao; } } child :
@entity @table(name = "observacao_bandeira") @sequencegenerator(name = "sq_obba_sq_observacao", sequencename = "sq_obba_sq_observacao", allocationsize = 1) @discriminatorcolumn(name=observacaobandeira.observacao_bandeira_tipo) @inheritance(strategy = inheritancetype.joined) @discriminatorvalue(observacaobandeira.bandeira) public class observacaobandeira extends abstractentidade implements serializable { static final string bandeira = "0"; // observacaobandeiratipo.bandeira; static final string observacao_bandeira_tipo = "obba_in_tipo_observ_bandeira"; private static final long serialversionuid = -2835835990963971955l; private long idobservacaobandeira; private string observacao; private **bandeira bandeira**; private observacaobandeiratipo observacaobandeiratipo; .... @manytoone @joincolumn(name = "band_sq_bandeira", nullable = false) public bandeira getbandeira() { return bandeira; } @entity @discriminatorvalue(observacaomovimentacaoduto.movimentacao_mistura_orgao) @table(name = "observacao_movimentacao_duto") public class observacaomovimentacaoduto extends observacaobandeira implements serializable { private static final long serialversionuid = 6781122676850797573l; static final string movimentacao_mistura_orgao = "2"; private movimentacaoduto movimentacaoduto; public observacaomovimentacaoduto() { super(observacaobandeiratipo.movimentacao_mistura_orgao); } public observacaomovimentacaoduto(bandeira bandeira, movimentacaoduto movimentacaoduto, string observacao) { super(observacaobandeiratipo.movimentacao_mistura_orgao, bandeira, observacao); this.movimentacaoduto = movimentacaoduto; } @onetoone @joincolumn(name = "modu_sq_movimentacao_duto", nullable = false) public movimentacaoduto getmovimentacaoduto() { return movimentacaoduto; } public void setmovimentacaoduto(movimentacaoduto movimentacaoduto) { this.movimentacaoduto = movimentacaoduto; } }
i'm trying delete "observacaomovimentacaoduto" bandeira entity.
i tried possible known ways(at least me).
- simply removing collection
- removing collection , calling entitymanager.remove()
- removing from collection, setting parent entity null , removing calling entitymanager.remove()
- removing collection, setting parent null , persisting parent entity
here recent code @ controller :
public void removerobsbandeira(actionevent event) { observacaobandeira obs = (observacaobandeira) event.getcomponent().getattributes().get("obs"); observacaobandeira obstodelete = servico.findbyid(new observacaobandeira() , obs.getidobservacaobandeira()); bandeira bandeira = obstodelete.getbandeira(); bandeira.getitensobservacao().remove(obstodelete); //obstodelete.setbandeira(null); servico.remover(obstodelete); //servico.remover(obstodelete); //obs = servico.persistir(obs); //servico.remover(obs); servico.atualizar(); this.cenarioselecionado.getbandeira().getitensobservacao().remove(obstodelete); } other relevant information :
- spring 2.5.x
- jpa 1.0
- hibernate 3.3.2.ga
- application server weblogic 11
thanks in advance help.
Comments
Post a Comment