Criar instancia se não existir no banco
28/12/2011 13:48
0
Recentemente eu esbarrei numa situação que precisava importar o csv para meu projetinho de aprendizado grails.

Deu certo, ele está fazendo a leitura do arquivo e populando minhas classes Pessoa, Telefone, Endereco.

Minha dificuldade agora está em:
Criar a pessoa, apenas se não existir (com base no campo "documento")
Adicionar o telefone para pessoa, apenas se ela não tiver esse telefone

Calasses:
Pessoa {String nome, String documento, hasMany[telefones:Telefone, enderecos:Endereco]}
Telefone {String numero}

Meu pensamento seria na minha classe importação, adicionar um if

pessoa = new Pessoa()

Aqui entra a dificuldade: Minha classe não reconhece o findByDOcumento para eu fazer "se retornar null, adiciona se não pula

pessoa.findByDocumento(campo[1])// Campo[1] vem da leitura do csv - não reconhece o findby

Se alguem conseguir me ajudar, serei muito gratooo!!!

Abs
Tags: Importação


0
Oi Rafael,

os finders dinâmicos só executam buscas diretamente do banco de dados. Por esta razão, se os seus dados estão sendo lidos a partir de um CSV não irá funcionar.


0
Você poderia utilizar um map para trabalhar com a chave sendo o documento, e o valor a sua instância de pessoa.


0
@Henrique

Talvez eu tenha me expressado mal.

Meu findBy é justamente para verificar NO BANCO se existe a instância.

Quero "Verificar se já tem na tabela de Pessoas um indivíduo com o documento '12345678910' (que está sendo lido no csv) e se retornar null, eu vou criar esse indivído)"

Nesse caso o findBy num deveria funcionar? ou realmente terei que pensar de um outro jeito?

Obrigado!
28/12/2011 15:38


0
Então pode-se fazer assim:
def pessoa = Pessoa.findByDocumento('12345678910')?:new Pessoa(passa aqui os valores)

com grails 2.0 vc pode fazer assim:
Pessoa.findOrSaveWhere(documento: '12345678910', e outros parametros)

espero ter ajudado!


0
Carlos E Z Batistão,


Ajudou sim! Estou usando a v2 já no aprendizado... e gostando muito

Estou ansioso para chegar em casa e fazer o teste! de qualquer forma, muito obrigado
28/12/2011 17:11



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