Grails gerando exception: identifier of an instance of DOMAIN was altered from X to Y;
19/08/2014 12:42
0
Tenho a seguinte domain em meu sistema:

[Pagamento]

BigDecimal valor
StatusPagamento statusPagamento


[StatusPagamento]
String chave //Uma descrição do status do pagamento.


Dentro da minha controller tenho o seguinte CommandObject

@Validateable
class PagamentoCommand {

List pagamento = [].withLazyDefault {
new Pagamento()
}
}


Quando listo os pagamentos eu posso editar o status dele, porém ao fazer isto o Hibernate não está alterando o id do statusPagamento da domain pagamento e sim tentando trocar o id da domain StatusPagamento.

Segue uma parte do meu form:
<g:each in="${pagamentos}" var="pagamento" status="i">
<g:select name="pagamento[${i}].statusPagamento.id" from="${StatusPagamento.list()}" optionKey="id" optionValue="descricao" value="${pagamento.statusPagamento.id}" />
</g:each>


Como posso contornar este problema?

Desde já agradeço as respostas.


Tags: command grails hibernate


0
Carlos,

vi uma coisa estranha neste seu command object. Você está instanciando um novo objeto do tipo Pagamento, certo? O problema é que instanciando assim este não vai estar relacionado a uma sessão do Hibernate e, consequentemente, também não vai ter o atributo id presente neste.

Minha sugestão é você executar o comando session.attach (acho que é attach mesmo) passando esta instância que você acabou de criar.


0
Kiko,

Isto eu uso para quando vai criar um pagamento novo, eu estou usando AJAX para isso, então em minha tabela eu coloco um novo elemento. Quando eu crio um novo pagamento ele salva normalmente, sem problema algum. Apenas quando vou editar ele dá este erro. Eu debuguei e ele tenta alterar o id da minha domain StatusPagamento de 1 para 3, por exemplo, sendo que deveria trocar o valor do id no Pagamento.statusPagamento. Mas não compreendo por que isto está ocorrendo.

Mas de qualquer forma vou fazer o que disse. Pode ser que dê certo.

Obrigado.



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