I want to save my domain class to the database without specifying the createdUser
or createdDate
. I’ve created an object called AuditingInfo
and embedded it in the main Person
domain class like this:
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
}
I cannot use the beforeInsert
and beforeUpdate
events in the Person
domain or AuditingInfo
class, because it always causes a NullPointerException
in org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener
.
Therefore, I want to use the metaClass
way, as used below (this action is defined in a *GrailsPlugin.groovy
file, but unfortunately my project is a Grails project, not a Grails plugin project):
def doWithDynamicMethods = { ctx ->
application.domainClasses.each { org.codehaus.groovy.grails.commons.GrailsDomainClass gc ->
gc.metaClass.beforeInsert = {
}
gc.metaClass.beforeUpdate = {
}
}
}
How can I apply this method to my project context? Thank you so much.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…