在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