Cascade Save-Update sem BelongsTo, criticando o delete.
Postado em 01/03/2012 17:27
0
0
Prezados, tive uma necessidade que me gerou essa dúvida.

Pelo que entendi, no GORM, o belongsTo só serve para mudar meu relacionamento para cascade all ao invés de só save-update. Estou certo ??

Com base nessa premissa, queria fazer um cascade delete restrict para não deixar apagar um registro pai caso ela já tenha associações com outras tabelas.

Para isso, retirei o belongsTo da classe filha e coloquei uma composição direta no pai.

Fazendo só isso, o GORM fará a crítica se eu tentar apagar um registro caso ele já tenha associação ? Ou preciso fazer um mapping ? Pergunto pois não achei nada nesse sentido ainda.

E mais, essa é uma boa prática, ou ainda estou pensando muito orientado a BD ?

Abs [] e obrigado pela atenção dispensada.
Tags: cascade, delete GORM
adrianosi
Pontos: 127






1
0
01/03/2012 19:39

Henrique Lobo Weissmann (Kico)
Pontos: 2586



0
0
02/03/2012 17:23
Caracaaaa Kico... Obrigadasso pelo material...

Acho que diminuirá minha participação no fórum para tirar dúvidas de GORM em 90%... rsrsrrs

O trecho

In other words, the author has been deleted, but the books haven't. That's where belongsTo comes in: it ensures that deletes are cascaded as well as saves. Simply by adding the line static belongsTo = Author to Book, the above code will print empty lists for Author and Book. Simple, right? In this case, yes, but the real fun is only just beginning.
Aside: see how we're forcing a flush of the session in the example above? If we don't, Author.list() may display the author that's just been deleted, simply because the change may not have been persisted by that point.


na parte 2 da série, matou a questão....

Abs []

adrianosi
Pontos: 127



 


Esqueceu sua senha?
 
Grails Brasil é mantido por itexto Desenvolvimento de Projetos Ltda.
Em caso de problemas, sinta-se livre para procurar Henrique Lobo Weissmann (Kico) por e-mail: kicolobo@itexto.net
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão (clique no logo à direita para maiores detalhes)