我的項目的副本包含HibernateGrailsPlugin.groovy下面的代碼片段:是否可以在我的grails應用程序上自定義hibernate-plugin自動生成的CRUD方法?
def doWithDynamicMethods = {
def dynamicMethods = HibernatePluginSupport.doWithDynamicMethods
dynamicMethods.delegate = delegate
dynamicMethods.call(it)
// aids in generating appropriate documentation in plugin.xml since
// domain class methods are lazily loaded we initialize them here
if(plugin.basePlugin) {
try {
def clz = application.classLoader.loadClass("org.grails.Behavior")
clz.count()
}
catch(e) {
// ignore
}
}
}
我是新來的Grails/Groovy的,但如果我理解正確的話,這個閉合委託給doWithDynamicMethods添加/移除的動態方法關閉HibernatePluginSupport類。 如果HibernatedPluginSupport的代碼駐留在我的項目的插件副本中,我似乎可以用其餘的grails特定代碼編譯HibernatePluginSupport類,我可以很容易地根據我的需要定製它。 我的問題是,如何修改特定類的自動生成方法?我看到的唯一方法是重寫groovy文件中的doWithDynamicMethods閉包,但我不想那樣做,因爲我只是爲某些域類定製它。更具體地說,我如何刪除/替換'HibernatePluginSupport.doWithDynamicMethods'閉包添加的動態方法?
它是什麼,你想定製?也許諸如beforeInsert,beforeUpdate等攔截器方法是實現它的更好方法?我從來沒有聽說過修改save()delete(),find()等的人 – leebutts 2010-08-09 20:52:45