首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails域beforeInsert / beforeUpdate

Grails域beforeInsert / beforeUpdate
EN

Stack Overflow用户
提问于 2012-02-15 00:19:00
回答 2查看 2.7K关注 0票数 2

我希望在不指定createdUsercreatedDate的情况下将域类保存到数据库中。我创建了一个名为AuditingInfo的对象,并将其嵌入到主Person域类中,如下所示:

AuditingInfo.groovy

代码语言:javascript
复制
class AuditingInfo {
    static constraints = {
        createdUser (nullable : true)
        updatedUser (nullable : true)
        createdDate(nullable : true)
        updatedDate(nullable : true)
    }

    static mapping = {
        columns {
            createdUsercolumn: 'T_CREATED_USER'
            updatedUsercolumn: 'T_UPDATED_USER'
            createdDatecolumn: 'T_CREATED_DATE'
            updatedDatecolumn: 'T_UPDATED_USER'
        }
    }

    User createdUser
    User updatedUser
    Date createdDate
    Date updatedDate
}

Person.groovy

代码语言:javascript
复制
class Person {
    static embedded = ['auditingInfo']
    AuditingInfo auditingInfo

    static constraints = { auditingInfo(nullable: true) }
    String name
    Long id
}

我不能在Person域或AuditingInfo类中使用beforeInsertbeforeUpdate事件,因为它总是在org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener中导致NullPointerException。因此,我希望使用metaClass方式,如下所示(此操作在*GrailsPlugin.groovy文件中定义,但不幸的是,我的项目是Grails项目,而不是Grails插件项目):

代码语言:javascript
复制
def doWithDynamicMethods = { ctx ->       
    application.domainClasses.each { org.codehaus.groovy.grails.commons.GrailsDomainClass gc ->
        gc.metaClass.beforeInsert = {
        }

        gc.metaClass.beforeUpdate = {
        }
    }
}

如何将此方法应用于我的项目上下文?非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-15 00:24:50

您可以从启动时执行的Bootstrap.groovy中应用您的metaClass修改。

票数 3
EN

Stack Overflow用户

发布于 2012-02-15 15:53:08

同意doelleri的观点

只需添加您的代码:

代码语言:javascript
复制
application.domainClasses.each { org.codehaus.groovy.grails.commons.GrailsDomainClass gc ->
                    gc.metaClass.beforeInsert = {
                    }
                    gc.metaClass.beforeUpdate = {
                    }
        }

到BootStrap.groovy中

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9280340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档