Groovy / Grails动态添加String类型字段

时间:2013-08-28 02:34:13

标签: grails groovy

如何将String类型字段添加到类(即该类的所有实例),比如grails将id和version字段添加到所有域类?如果可能,如何将字段类型指定为String / Long等

编辑:

添加的字段不会在DB中更新。如何使它们持久?

2 个答案:

答案 0 :(得分:2)

关于POGO,您可以使用ExpandoMetaClass添加/覆盖属性/字段/构造函数。

class Foo{
   String bar
}

//Add a field to Foo at runtime
//Type is set to String in this case
Foo.metaClass.baz = "Hello World"

//Add a method to Foo at runtime
Foo.metaClass.doSomething = {String str -> str.reverse()}

assert new Foo().baz == "Hello World"
assert new Foo().doSomething("Hello") == "olleH"

答案 1 :(得分:1)

对于您的用例,您可以使用普通继承:

abstract class Base {
  // common fields
  // constraints for those fields
  // etc.
}

class MyDomain extends Base {
}