【问题标题】:Grails databinding doubtGrails 数据绑定疑问
【发布时间】:2011-05-18 14:48:11
【问题描述】:
   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 没有。我想不明白。任何帮助将不胜感激。

【问题讨论】:

    标签: data-binding grails


    【解决方案1】:

    Grooveek is correct,因为您从未调用过carroMovelInstance.save()

    但是,您可能更简单地利用 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() 调用将如何(或不会)级联到关联的域对象。

    【讨论】:

      【解决方案2】:

      您从不要求 carroMovelInstance 保存... carro 实例也没有引用 carroMovel 实例,因此没有级联保存

      【讨论】:

      • 我复制错了。最后一行应该是:“carroMovelInstance.save()”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多