在Grails中,有沒有辦法限制枚舉映射到的列的大小。在以下示例中,我想列類型是CHAR(2)Grails枚舉映射
enum FooStatus {
BAR('br'), TAR('tr')
final static String id
}
class Foo {
FooStatus status
static constraints = {
status(inList:FooStatus.values()*.id,size:2..2)
}
}
既INLIST和大小沒有導出的模式時的任何效果,列型保持其缺省值(varch(255) ) 也許我可以這樣做,如果我定義一個新的UserType。任何想法 ?
謝謝 -Ken
這很煩人,我不得不爲每個枚舉類型添加一個getter和setter,並且還聲明它爲「transient」。伯特,不會自定義的UserType是一個更優雅的解決方案嗎? – ken 2010-09-20 06:25:42
如果您可以設置Enum的id並將id轉換爲調用代碼中的枚舉實例,那麼transient和getter/setter是可選的。真正的變化是堅持一個字符串而不是Enum(這是你使用inList()的暗示,因爲這對Enum來說不起作用)。但確定,一個自定義的UserType應該可以工作。如果你不止一次地這樣做,你會想把常見的東西提取到基類中。如果可能的話,我希望將所有內容都保存在域類中,只要這些更改沒有那麼重要。 – 2010-09-20 14:17:29
伯特,是的,你是對的我想能夠設置和獲得狀態變量作爲一個枚舉,也能夠保存數據庫,因此在枚舉中使用ID。我更傾向於自定義用戶類型沿着mapping = {status type:EnumUserType} – ken 2010-09-20 20:46:15