BelongsTo não persiste no BD
24/01/2013 01:38
0
Pessoal,

tenho um dominio B que possui de um belongsTo do dominio A assim:

 static belongsTo = [a: A]


O problema é que no BD, na tabela do dominio B não persiste nenhuma referência do dominio A. O certo deveria existir um atributo 'a_id', porém o Hibernate fez foi criar um campo b_id na tabela do dominio A.

Porém quando eu mando salvar o dominio B, ele persiste as informações correspondentes porém sua referência na tabela A não é atualizada e a relação entre ambos fica corrompida.

No dominio A eu declarei uma instância do dominio B assim:

class A{
...
B b
...
}

porém se eu mando salvar apenas uma instancia de B ele não faz atualiza o objeto A. Pra eu resolver o problema tive que fazer uma 'gambiarra', após salvar o B eu faço o seguinte:

...
a.save(flush:true)
def b = B.get(params.b.id)
b = a.b
b.save(flush:true)
...


Somente assim eu consigo persistir ele na base de dados, porém sei que tem alguma coisa errada e queria saber. Será que alguém poderia me ajudar?
Tags: belongsTo


0
Tentou usar o hasOne?

class A {
static hasOne = [b:B]
}

class B {
A a
}


Vc chegou a dar um validate pra ver se apontou algum erro?

if (a.validate()) {
// do something with user
}
else {
a.errors.allErrors.each {
println it
}
}



Normalmente diz alguma coisa =)

dá uma lida lá no manual do grails... ve se diz alguma coisa parecida com o que você fez:
aqui
24/01/2013 11:59


0
Mussatto ainda não fucionou....

estou usando exatamente o exemplo B da referência.

muito estranho...
24/01/2013 15:42


0
não imprimiu nenhum erro também?????
24/01/2013 15:56


0
se nao me engano quando vc coloca o belongsTo, sem o hasOne ele cria uma tabela intermediária

ele criou essa tabela?
24/01/2013 19:21



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