如何添加一個字符串類型字段到類(即該類的所有實例),如grails添加一個id和版本字段到所有域類?如果可能的話,如何指定爲字符串/龍等Groovy/Grails動態添加一個字符串類型字段
編輯字段的類型:
添加的字段不更新數據庫。如何讓他們持久?
如何添加一個字符串類型字段到類(即該類的所有實例),如grails添加一個id和版本字段到所有域類?如果可能的話,如何指定爲字符串/龍等Groovy/Grails動態添加一個字符串類型字段
編輯字段的類型:
添加的字段不更新數據庫。如何讓他們持久?
對於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"
它不會是持久的,所以不是域類屬性的候選人 –
@BurtBeckwith我假設OP是指域類作爲一個例子,而不是實際上試圖將屬性添加到域類。更傾向於問題中的「groovy」標籤。我可能是錯的。 – dmahapatro
hm,實際上我想爲所有域類添加一些通用屬性。如何讓他們堅持下去? – user2463026
對於你的使用情況,您可以使用正常的繼承:
abstract class Base {
// common fields
// constraints for those fields
// etc.
}
class MyDomain extends Base {
}
我相信使用AST插件做這樣的事情的審計跟蹤http://grails.org/plugin/審計跟蹤。我們可能值得看看這個源代碼 – aldrin