Hibernate não deleta entidade removida da lista

6 respostas
thiagowig

Fala galera.

Tenho duas entidades com o seguinte mapeamento:

FASCICULO

@ManyToOne(targetEntity=Periodico.class) @ForeignKey(name="FK_periodico_fasciculo") @JoinColumn(name="IDT_PERIODICO", nullable=false) private Periodico periodico;

PERIODICO

@OneToMany(mappedBy="periodico", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private List<Fasciculo> fasciculoList;

O PROBLEMA:
O periodico tem uma lista de fasciculo.
Dentro da minha aplicação eu excluo um fasciculo da minha lista e salvo o meu periodico.
Mas ao abrir novamente o meu periodico o fasciculo excluido continua la.

O Hibernate não encherga que eu exclui um elemento da lista, e como a chave estrangeira esta no fasciculo e continua sendo exibido.

Alguem sabe uma solução?

6 Respostas

mynameisflaw

session.delete(fasciculo) :slight_smile:

thiagowig

Mas ai eu terei que saber que o usuario deletou um fasciculo e depois salvou o periodico.

Eu queria saber se existe uma forma automatica, com o hibernate/jpa verificando se não há mais ligação entre o Periodico e o Fasciculo e excluindo se necessario.

Insonia

No JPA, não existe a funcionalidade de deletar elementos que foram retirados de uma lista. Por isso, o CascadeType.ALL não faz o que você deseja.

O Hibernate implementa isso como uma extensão. Trata-se da remoção de “Orfãos”.

A anotação que deve ser inserida é específica do Hibernate:

Espero ter ajudado…

thiagowig

Teria que ser com JPA mesmo.

Vou ter que fazer a mão.

Valew…

thiagowig

Conversei com o pessoal do projeto e só podem anotacoes do JPA, nada alem do padrao.

Ai complica.

R

thiagowig:
Teria que ser com JPA mesmo.

Vou ter que fazer a mão.

Valew…

Mesmo que você esteja usando JPA, coloca a anotação do hibernate para apagar os “orfãos” que deve funcionar.
Testa aí…

flw!

Criado 13 de janeiro de 2010
Ultima resposta 13 de jan. de 2010
Respostas 6
Participantes 4