Grails找到Domain然后保存它

时间:2012-07-11 19:29:26

标签: grails grails-domain-class

我想要做的是找到一个域,然后创建一个新域或保存预先存在的域。这是我目前正在使用的代码(在此项目中,skeleton是包名称):

    def save() {
        Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name)
        def instance = lob.get(params.lob.id)
        if (instance){
            params.data.each { name, value ->
                if (instance.metaClass.hasProperty(name)){
                    instance[name] = value
                }
            }
        }else{
            instance = new lob()
            params.data.each { name, value ->
                if (instance.metaClass.hasProperty(name)){
                    instance[name] = value
                }
            }
        }
    }

这似乎不起作用。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

getDomainClass返回的对象是GrailsDomainClass的实例。要获取可以调用get的实际域类,请先在其上调用getClazz。例如:

Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name).clazz

此外,您必须在类对象上调用newInstance,而不是使用new关键字来创建新实例。