By default when you create a domain class, it will automatically add \"id\" and \"version\" column for all the domain classes (tables). What if I want to add a column say for e.
You can do this using metaprogramming. The code that adds the property should be run either in the doWithDynamicMethods
closure of a plugin or from Bootstrap.groovy
. If using the plugin approach, something like this should work:
def doWithDynamicMethods = {ctx ->
application.domainClasses
.findAll {it.simpleName.startsWith('S')}.metaClass.each {domainMetaClass ->
Integer fooVal = 0
domainMetaClass.getFoo = {-> fooVal}
domainMetaClass.setFoo = {Integer newFooVal -> fooVal = newFooVal}
}
}
The code above should add a Integer foo
property to every domain class whose name starts with 'S'. I haven't tested this code, so it probably doesn't work. To see an example that you can be more confident about:
doWithDynamicMethods
closure