Salvar Lista de Objetos
10/09/2009 00:00
class Pessoa {
// varios campos
static hasMany = [telefone:Telefone]
}
class Telefone {
String numero
static belongsTo = [pessoa:Pessoa]
}
def pessoa = Pessoa.get(1) // pego a pessoa de id 1. Imagine que ela já tenha uma listagem de telefones.
pessoa.save(); // matou seu problema ;)
pessoa.telefones.add(instancia_de_telefone)
def pessoa = new Pessoa()
pessoa.telefones.add(instancia_de_telefone)
pessoa.save(); // matou seu problema ;)
pessoa = Pessoa.get(1) //Ou seja, já tenho uma pessoa persistida
pessoa.telefones.add(instancia_de_telefone) //Estou adionando objetos a uma pessoa já cadastrada no banco
pessoa.save() //Update em pessoa e insert em telefones
pessoa = new Pessoa() //pessoa ainda não está persistida
pessoa.telefones.add(instancia_de_telefone) //Estou adionando objetos a uma pessoa que não já cadastrada no banco
pessoa.save() //Insert em pessoa e insert em telefones
pessoa = Pessoa.get(1) //Ou seja, já tenho uma pessoa persistida
pessoa.telefones.add(instancia_de_telefone) //Estou adionando objetos a uma pessoa já cadastrada no banco
pessoa.save() //Update em pessoa e insert em telefones
[/quote]
pessoa = new Pessoa() //pessoa ainda não está persistida
pessoa.telefones.add(instancia_de_telefone) //Estou adionando objetos a uma pessoa que não já cadastrada no banco
pessoa.save() //Insert em pessoa e insert em telefones
class Pessoa
{
String nome
static hasMany = [documentos:DocumentoPessoa]
static constraints =
{
nome(blank:false, nullable: false)
}
String toString()
{
"${nome}"
}
}
class Aluno
{
Pessoa pessoa
Date dataNascimento
static belongsTo = [pessoa : Pessoa]
}
class DocumentoPessoa
{
Pessoa pessoa
String numero
TipoDocumentoPessoa tipoDocumentoPessoa
static constraints =
{
numero(blank:true,nullable:false,unique:true)
pessoa(nullable:false)
tipoDocumentoPessoa(nullable:false)
}
String toString()
{
"${tipoDocumentoPessoa}"+ " - "+"${numero}"
}
}
def save =
{
Aluno.withTransaction
{status ->
def alunoInstance = new Aluno(params)
def pessoaInstance = new Pessoa()
pessoaInstance.nome = params.nome
alunoInstance.pessoa = pessoaInstance //passa pessoa para aluno
def cpf = new DocumentoPessoa()
cpf.numero = params.cpf
cpf.pessoa = pessoaInstance //passa pessoa para cpf
cpf.tipoDocumentoPessoa = TipoDocumentoPessoa.get(62) //pega p tipo cpf
def rg = new DocumentoPessoa()
rg.numero = params.rg
rg.pessoa = pessoaInstance //passa pessoa para cpf
rg.tipoDocumentoPessoa = TipoDocumentoPessoa.get(63) //pega p tipo cpf
pessoaInstance.documentos.add(rg)
pessoaInstance.documentos.add(cpf)
if (!alunoInstance.hasErrors() && alunoInstance.save(flush:true))
{
flash.message = "Aluno ${params.id} updated"
redirect(action:show,id:alunoInstance.id)
}
}
}
alunoInstance.pessoa.save()
if (!alunoInstance.hasErrors() && alunoInstance.save(flush:true))
{
flash.message = "Operação realizada com sucesso!"
redirect(action:show,id:alunoInstance.id)
}
else
{
status.setRollbackOnly()
}
pessoaInstance.documentos.add(rg)
pessoaInstance.documentos.add(cpf)
pessoaInstance.addToDocumentos(rg)
pessoaInstance.addToDocumentos(cpf)
pessoaInstance.addToDocumentos(rg)
pessoaInstance.addToDocumentos(cpf)
Para se registrar, clique aqui.