2011-05-18 45 views
0
Class Carro { 
String name 
String marca 
String matricula 

} 

Class CarroMovel{ 

String pro1 
String prop2 
String prop3 

Carro carro 

static hasMany = [ carros: Carro] 

} 

def save2 = { 

       def carroInstance = new Carro() 
       def carroMovelInstance = new CarroMovel() 

       carroInstance.name = params.name 
       carroInstance.marca = params.marca 
       carroInstance.matricula = params.matricula 

       carroMovelInstance.prop1 = params.carroMovel.prop1 
       carroMovelInstance.prop2 = params.carroMovel.prop2 
       carroMovelInstance.prop3 = params.carroMovel.prop3 

       carroInstance.save() 
       carroMovelInstance.carro = carroInstance 
       carroMovelInstance.save()     

      } 

的CarroInstance是储蓄,但carroMovelInstance不是。我想不明白。任何帮助都会有所帮助。Grails的数据绑定疑问

回答

1

Grooveek is correct级联。

但是,您可能更简单地利用Grails的数据绑定,而不是不必要地创建关联并手动绑定这些参数。

// Update your Carro domain. 
def Carro { 
    String name 
    String marca 
    String matricula 

    // will cause persistence operations to cascade from CarroMovel to Carro 
    static belongsTo = CarroMovel 
} 

// Update your save2 action. 
// By passing 'params' to the CarroMovel constructor, Grails will bind request 
// parameters to domain properties of the same name; it even works with associations! 
def save2 = { 
    def carroMovelInstance = new CarroMovel(params) 
    if(carroMovelInstance.validate) { 
     carroMovelInstance.save() 
    } 
} 

阅读Grails Data Binding,特别是关于关联的部分。此外,请阅读"Understanding Cascading Updates and Deletes"以了解如何在父域对象上调用save()将(或不会)级联到关联的域对象。

1

你从来没有索要carroMovelInstance救...的卡罗实例有,也没有参考carroMovel实例所以没有节省你还未曾援引carroMovelInstance.save()

+0

我抄错了。最后一行应该是:“carroMovelInstance.save()” – robert 2011-05-18 16:36:33

+0

但没有任何反应 – robert 2011-05-18 17:18:00