Update em relação one-to-many
14/02/2011 00:00
0
Olá pessoal, boa tarde.

Gostaria de saber a maneira mais indicada para se atualizar os filhos de uma domain class em uma relação one-to-many.

Classe pai:


package record.UserAcccount

class UserAccount {
String username
String password
Date dateCreated
Date lastUpdated
static constraints = {
name(unique:true, blank:false, maxSize:40)
password(blank:false, maxSize:40)
}
static hasMany = [paymentMethods: PaymentMethod]
static mapping = {
paymentMethods lazy:false, cascade:"all, delete-orphan"
}
}


Classe filho:



package record.PaymentMethod

class PaymentMethod {
String cpf
Date dateCreated
Date lastUpdated
static constraints = {
cpf(unique:true, blank:false, maxSize:15)
}
static belongsTo = [userAccount:UserAccount]
}


Modifiquei a página create.gsp da class pai para permitir a inclusão de objetos filhos. Além dos parâmetros 'username' e 'password', o controller recebe o(s) parâmetro(s) 'paymentMethods[x].cpf'.

Controller:


def create = {
def userAccount = new UserAccount()
userAccount.properties = params
if(userAccount.validate()){
userAccount.save()
redirect(action: "show", id: userAccount.id)
}else{
userAccount.discard()
println 'validation error'
userAccount.errors.each { error ->
println error
}
}
}
def update = {
def userAccount = UserAccount.get(params.id)
userAccount.properties = params
if(userAccount.validate()){
userAccount.save()
redirect(action: "show", id: userAccount.id)
}else{
userAccount.discard()
println 'validation error'
userAccount.errors.each { error ->
println error
}
}
}


A criação dos objetos está funcionando bem. A atualização, não. Estou recebendo um erro de violação da constraint 'unique' da domain class PaymentMethod. Estou googlando e testando novas abordagens para resolver o problema, mas gostaria de aproveitar e perguntar se alguém tem uma sugestão de solução fácil para o meu problema.

Para fechar, gostaria de tirar mais uma dúvida. Se o cascade da minha classe pai está configurada como "all, delete-orphan", se eu executar um userAccount.paymentMethods = [], os objetos filhos não deveriam ser deletados automaticamente?

Abraço a todos.
Tags: Grails


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