¿Es posible personalizar los métodos CRUD autogenerados de hibernación-plugin en mi aplicación Grails?

StackOverflow https://stackoverflow.com/questions/3443468

Pregunta

La copia de mi proyecto contiene el siguiente fragmento en HibernateGrailsplugin.Groovy:

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
            }
        }
    }

Soy nuevo en Grials/Groovy, pero si entiendo correctamente, este cierre está delegando la adición/eliminación de métodos dinámicos a la clase DowithdynamicMethods de la clase HibernatePlugInsupport. Parece que la clase HibernatePlugInsupport se compila con el resto del código específico de los gros, si el código para HibernatedPlugInsupport vivía en la copia del complemento de mi proyecto, podría personalizarlo fácilmente a mis necesidades. Mi pregunta es, ¿cómo modifico los métodos autogenerados para clases específicas? La única forma en que veo es reescribir el cierre DowithdynamicMethods en el archivo maravilloso, pero no quiero hacer eso ya que solo lo estoy personalizando para algunas clases de dominio. Más específicamente, ¿cómo elimino/reemplazo los métodos dinámicos agregados por el cierre 'HibernatePlugInsupport.dowithdynamicmethods?

¿Fue útil?

Solución

En primer lugar: los buscadores dinámicos se basan en Groovy's Características de metaprogramación.

No debe modificar el hibernateGrailsplugin.groovy. Este archivo es parte del complemento Grails Hibernate y se anulará al ejecutar ciertos comandos de Grails.

Dado que es libre de modificar sus meta-clases de objetos geniales en cualquier momento desde su aplicación, podría

a) Cree su propio complemento Grails que se cuele en los buscadores dinámicos personalizados (con una dependencia del complemento de Grails Hibernate) o

b) Lanza tus modificaciones meta-clase a bootstrap.groovy para aplicarlas al inicio de la aplicación

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top