Problema com método addTo*
15/01/2014 09:28
0
Bom Dia Pessoal,

estou com uma instabilidade em meu método addTo* onde tenho um registro que constantemente tenho que fazer o relacionamento de informações em uma instância. O problema é que quando eu efetuo várias inserções em um curto espaço de tempo, elas deixam de serem persistidas no banco de dados e nem depois de um tempo elas retornam, simplesmente são ignoradas.

Minha classe é simples Chamado e Atendimento, sempre que efetuo um atendimento tenho que registrá-lo e isso no Chamado e após 2 registros consecutivos o 3° já não persiste no banco de dados e eu perco o registro.

Class Chamado implements Serializable{
...
hasMany = [atendimentos: Atendimento]
...
}

Class Atendimento implements Serializable{
...
belongsTo = [chamado: Chamado]
...
}


Alguém saberia o porque que isso acontece?
Tags: addTo, addTo*, GORM,


0
Dá pra mandar a controller para saber exatamente como está fazendo?
15/01/2014 10:28


0
Tem sim Diego,



def regAtendimento(Long id){

def chamadoInstance = Chamado.get(id)

if (!chamadoInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'Chamado.label', default: 'Chamado'), id])
return
}

chamadoInstance.status = StatusChamado.findByCodigo("MOV") // altera o status


if (!chamadoInstance.save(flush: true)) {
render(view: "editAtendimento", model: [chamadoInstance: chamadoInstance])
return
}


def mov = chamadoService.registraAtendimentoSaida("") //retorna uma instância de Atendimento com valores predefinidos de saída.
//mov.chamado = chamadoInstance // tentei persistir direto, mas também não funcionou.
//mov.save(flush:true)
chamadoInstance.addToAtendimentos(mov) // relaciona aqui
Usuario user = usuarioService.usuarioLogado()
user.lotacao.removeFromChamados(chamadoInstance) // aqui ta OK


redirect(action: "showChamado", id: chamadoInstance.id)


}


Este método está funcionando. Eu registro 2 Atendimetnos e no 3° ele deixa de funcionar.
15/01/2014 10:56


0
Blz Ilmon, algumas questões só para refinar bem o problema:
Esse "chamadoService.registraAtendimentoSaida("")" retorna um Atendimento que ja existe no BD ou cria um novo?
Quando você diz "Eu registro 2 Atendimetnos e no 3° ele deixa de funcionar." o que acontece depois do 2°? dá erro? salva um objeto vazio? não salva mais nada?
Nessa 3° vez o Atendimento retornado por "chamadoService.registraAtendimentoSaida("")" válido e correto?
15/01/2014 12:36


0
Ola Dyego,

essa função chamadoService.registraAtendimentoSaida("") retorna uma instância de Atendimento com os valores predefinidos, segundo as regras de negócio, para ser persistida.

As primeiras vezes que eu uso o método .addToAtendimentos ele funciona nas primeiras 2 vezes, persiste corretamente no banco de dados, aparece nas consultas, tudo normal. Quando ocorre a terceira vez ele não dá nenhum erro, o validate() retorna true porém ele não persiste no banco de Dados e simplesmente continua a funcionar normalmente, não apresenta nenhum erro, segue o fluxo normal como se estivesse persistido no Banco de Dados porém não persiste.

Acho que deve ser alguma coisa relacionada a sessão do hibernate ou algo do gênero, sei lá.... rsrsrs... to ficando meio doido pra saber o porque desse comportamento estranho...
15/01/2014 13:38



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