gpt4 book ai didi

grails - Grails域beforeInsert/beforeUpdate

转载 作者:行者123 更新时间:2023-12-02 13:49:33 24 4
gpt4 key购买 nike

我想将域类保存到数据库中而不指定createdUsercreatedDate。我创建了一个名为AuditingInfo的对象,并将其嵌入到主要的Person域类中,如下所示:
AuditingInfo.groovy:

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:
class Person {
static embedded = ['auditingInfo']
AuditingInfo auditingInfo

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

我不能在 beforeInsert域或 beforeUpdate类中使用 PersonAuditingInfo事件,因为它总是会在 NullPointerException中导致 org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener
因此,我想使用 metaClass方式,如下所示(此操作在 *GrailsPlugin.groovy文件中定义,但不幸的是我的项目是Grails项目,而不是Grails插件项目):
def doWithDynamicMethods = { ctx ->       
application.domainClasses.each { org.codehaus.groovy.grails.commons.GrailsDomainClass gc ->
gc.metaClass.beforeInsert = {
}

gc.metaClass.beforeUpdate = {
}
}
}

如何将这种方法应用于项目上下文?非常感谢。

最佳答案

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

关于grails - Grails域beforeInsert/beforeUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com