Só salva no modo Debug
26/12/2015 17:21
0
Oi pessoal, estou com um problema bem estranho.

O código é:

?laudo.dataExecucao = new Date()

def servico = Servico.findById(laudo.vistoria.servico.id)
servico.status = new StatusServico(id:5)
servico.item = new ItemLicitacao(id:params.item)
servico.save()

laudo.save flush:true

O estranho é: a classe "servico" só é salva quando eu debugo e inspeciono se os valores estão corretos. Já testei mais de 20 vezes, quando não debugo não salva, e quando debugo salva.

Não sei se estou fazendo alguma coisa errada, talvez quando a execução é interrompida pelo breakpoint o "servico" consegue salvar antes do "laudo". Não entendo o que ocorre.

Alguém já viu algo assim?

OBS: Estou utilizando grails 3, e esse código está direto no método save do controller (a ideia é passar para um service depois).
Tags: Grails debug save


0
Olá, Victor.

Quando faz em Debug, mesmo depois que manda o debug prosseguir, o registro fica mesmo persistido no banco?


0
Sim quando eu debuto e vou prosseguindo ele armazena o valor no banco, consigo verificar o registro direto no banco. Porém quando não debugo nenhuma persistencia de "servico" acontece. 

Tem alguma idéia?


0
Resolvi o problema e era no mapeamento.

consegui identificar melhor o problema quando usei:
servico.save(flush: true, failOnError:true)

Com isso, descobri que estava dando erro pois existiam atributos null e obrigatórios da classe ItemLicitacao, filha de Servico (só estava preenchendo o id).

em ItemLicitacao estava:

static hasMany = [servicos : Servico]
static belongsTo = [servico: Servico]

Quando removi o belongsTo (incluído incorretamente no meu caso), eu não precisei de mais nenhum atributo preenchido além do id em ItemLicitacao. E assim o serviço passou a ser salvo normalmente.

Links que me ajudaram mto nessa questão de Save Cascade e Delete Cascade:
http://spring.io/blog/2010/06/23/gorm-gotchas-part-1/
http://spring.io/blog/2010/07/02/gorm-gotchas-part-2/
http://spring.io/blog/2010/07/28/gorm-gotchas-part-3/?

OBS: Não me perguntem como isso estava funcionando no Debug!!! Não faço a menor ideia.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto