grails - Grails找到域,然后将其保存

标签 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
                }
            }
        }
    }

这似乎不起作用。谁能帮我解决这个问题?

最佳答案

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

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

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

关于grails - Grails找到域,然后将其保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440011/

相关文章:

grails - 如何在Grails Controller 中获取有条件的数据?

grails - 在 grails 中建模多对一树

grails - 在grails中使用审核日志记录插件

grails - 如何运行 Grails 脚本并获取域类实例

hibernate - 更新域类和刷新 session ?

grails - 使用grails添加数据时,请提供null异常帮助

authentication - 如何在Grails应用程序中显示CAS身份验证用户名

hibernate - Grails上的GORM save()未保存在数据库中

grails - Grails GSP按钮调节

java - grails 中的 Google map 插件