Gorm executando insert + update para salvar uma nova instancia
27/09/2013 14:23
0
Tenho o seguinte model:

class Tenant {
....
}

class Usuario {
Tenant tenant
...
}

class Questao {
static belongsTo = [pesquisa: Pesquisa]
...
}

class Questionario {
Usuario entrevistador
static belongsTo = [
pesquisa: Pesquisa
]
}

class Pesquisa {
static hasMany = [
questao: Questao
questionarios: Questionario
]
Tenant tenant
}


Tenho uma classe PesquisaBuilder que fornece uma DSL simples para montar um objeto Pesquisa com todas as suas dependencias (questao e questionario), uso num script de bootstrap para criar alguns dados iniciais quando a aplicação estiver em ambiente de desenvolvimento, e também em test cases para criar dados de teste.

Pois bem, tem alguns testes onde ocorre uma violação de integridade do banco de dados devido a inserir registros na tabela questionario com o campo entrevistador_id null. Acontece que a propriedade em questão está preenchida nos objetos. Se eu habilitar os logs do hibernate e alterar o mapeamento da classe Questionario de forma que entrevistador seja nullable: true, eu posso ver que primeiro o hibernate executa um insert para criar o registro mas sem nenhuma associação, e logo em seguida executa um update para setar as chaves extrangeiras.

Alguem já viu esta situação?

O problema é o hibernate criar o registro com um insert e depois um update para preencher as chaves extrangeiras, quando tudo poderia ser feito apenas no insert.
Tags: gorm associacao notnull


0
Olá, Magno.

Amigo, o comportamenteo do Hibernate depende da versão dele, e do JDBC usado. Qual banco você está usando?

Com Postgres 9.2 aqui funciona normal, fazendo apenas um insert.

Abraços.


0
Olá,
Hibernate 3, Grails 2.2.2
SGBD Firebird 2.5, driver jaybird 2.2.0

Não é sempre que acontece, ainda não identifiquei exatamente qual a condição para este erro, mas consegui criar um projeto com um modelo de classes um pouco diferente mas que expõe este erro https://bitbucket.org/magnomp/gormtest

Só dar um "grailsw run-app"



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