我想为域类的beforeUpdate事件编写自定义侦听器:
我的项目中有很多 Realm 类。
我想创建自定义侦听器,并且在每个域类的beforeUpdate事件上,我要执行一些逻辑。

最佳答案

您可以像下面这样在beforeInsert中设置全局beforeUpdateBootStrap.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/

10-10 04:19