我想为域类的beforeUpdate
事件编写自定义侦听器:
我的项目中有很多 Realm 类。
我想创建自定义侦听器,并且在每个域类的beforeUpdate
事件上,我要执行一些逻辑。
最佳答案
您可以像下面这样在beforeInsert
中设置全局beforeUpdate
和BootStrap.groovy
:
import org.codehaus.groovy.grails.commons.GrailsDomainClass
class BootStrap {
def grailsApplication
def init = { servletContext ->
grailsApplication.domainClasses.each { GrailsDomainClass gc ->
gc.metaClass.beforeInsert = {
log.debug "beforeInsert"
//code here
}
gc.metaClass.beforeUpdate = {
log.debug "beforeUpdate"
//code here
}
}
}
def destroy = {}
}
如果您想对某个域类执行不同的操作,而对其他域类执行不同的操作,则
grailsApplication.domainClasses.each { GrailsDomainClass gc ->
if(gc.metaClass.javaClass.equals(User) || gc.metaClass.javaClass.equals(Role)){
gc.metaClass.beforeInsert = {
log.debug "beforeInsert"
//code here
}
gc.metaClass.beforeUpdate = {
log.debug "beforeUpdate"
//code here
}
} else ...
}
关于hibernate - 如何在Grails域类中将自定义监听器写入更新前事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19887171/