Dúvida relacionamento OneToMany no Hibernate

10 respostas
E

Eu tenho uma tabela de Clientes e pendurada nela uma tabela de Dependentes. Pra isso criei um relacionamento OneToMany unidirecional. Quando incluo ou altero um dependente do cliente, o hibernate inclui ou altera corretamente na tabela. Porém, quando e excluo um dependente e dou um merge no cliente, o hibernate não exclui o dependente da tabela, ele apenas seta null no campo de relacionamento com o cliente na tabela de dependentes.

Eu não quero este comportamento, quero que o dependente seja excluído da tabela. Como faço isso?

10 Respostas

renanreismartins

de uma olhadinha no atributo cascade da anotação…

cascade = {CascadeType.ALL}

abrasssssssssss

E

renanreismartins:
de uma olhadinha no atributo cascade da anotação…

cascade = {CascadeType.ALL}

abrasssssssssss

Já está assim, veja:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)

C

Bom dia

Então, como o renan falou acima da uma olhada nas operações de CASCADE, lá existem varias opções e uma delas é em caso de DELETE, UPDATE, e até mesmo ALL, que é um cascade geral que tudo que é feito no objeto pai é refletido para o objeto filho.

Falou.

E

Caio Vinicius:
Bom dia

Então, como o renan falou acima da uma olhada nas operações de CASCADE, lá existem varias opções e uma delas é em caso de DELETE, UPDATE, e até mesmo ALL, que é um cascade geral que tudo que é feito no objeto pai é refletido para o objeto filho.

Falou.

Já está assim, veja:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)

renanreismartins

quando vc fala que exclui o dependente, se refere a tira-lo da colecao de dependentes do cliente ou dar um delete ?

edit
o certo seria vc deleta-lo do banco e depois remove-lo da lista de dependentes do cliente…
/edit

edit2
aqui vc tem a explicação http://docs.jboss.org/hibernate/core/3.3/reference/en/html/example-parentchild.html
/edit2

abrassss

E

renanreismartins:
quando vc fala que exclui o dependente, se refere a tira-lo da colecao de dependentes do cliente ou dar um delete ?

edit
o certo seria vc deleta-lo do banco e depois remove-lo da lista de dependentes do cliente…
/edit

edit2
aqui vc tem a explicação http://docs.jboss.org/hibernate/core/3.3/reference/en/html/example-parentchild.html
/edit2

abrassss

Eu quero excluí-lo da coleção de dependentes e também removê-lo do banco de dados, pois não faz sentido existir um dependente sem estar vinculado a um cliente. Eu li o artigo, e nele tem o trecho abaixo que explica exatamente minha dúvida, porém, como faço pra setar o "“all-delete-orphan” através de annotations?

" In our case, a Child cannot exist without its parent. So if we remove a Child from the collection, we do want it to be deleted. To do this, we must use cascade=“all-delete-orphan”.

"
C

Olá pessoal, estou com um problema parecido. Tenho uma tabela que há um relacionamento com ela mesma.

|Pessoa |
|==========|
|pessoa_id |
|nome |

pessoa_id_sup

Onde pessoa_id_sup identifica a pessoa superior, alguém sabe como eu posso fazer um relacionamento na classe pessoa onde eu consiga ter a lista de pessoas subordinadas. Exemplo se eu sou a pessoa 01, os meus subordinados são as pessoas onde 01 aparece no campo pessoa_id_sup.

renanreismartins

vc vai precisar de uma query pra isso

algo como:

SELECT p FROM Pessoa p WHERE p.superior = :superior

abrasssssss

C

Então com o relacionamento ManytoOne quando eu pesquisar uma pessoa não consigo já buscar os subordinados.

renanreismartins

pode ser tb… é que pensei numa modelagem que ja havia feito, mas tb serve…

abrasss

Criado 19 de fevereiro de 2010
Ultima resposta 15 de abr. de 2010
Respostas 10
Participantes 4