我的grails应用程序使用了很多枚举,但目前用于枚举的GORM解决方案并不十分令人满意,因为它意味着数据在代码中,因为GORM不会将枚举映射到数据库中。
之前我们使用了一个包含不同类型枚举的大表,例如:一个表中的县和城市选择。因此,数据库中的表将包含3列:枚举类型(县或城市),ID和名称(县或城市)。
现在我想将它们切换到实际的枚举,但GORM似乎不太可能。我试图在域类中使用瞬态来实现它,但是AFAIK它仍然要求你有一个静态枚举已经存在供类引用。
我完全迷失在这里,任何人都可以提示我从哪里或哪些功能得到我想要的东西?
答案 0 :(得分:1)
简单地说,不要将Enums用于非静态且不太可能改变的数据。而是使用常规域类并引导所需的数据。
答案 1 :(得分:0)
也许这段代码是你想要的:
enum UserOrderState
{
WAITCHECK("Ожидает проверки"),
INWORK("Выполняется"),
DONE("Выполнен"),
CANCELED("Отменен"),
NOPRODUCT("Нет в наличии")
String name
UserOrderState(String name)
{
this.name = name
}
static list()
{
[ WAITCHECK, INWORK, DONE, CANCELED, NOPRODUCT ]
}
}
然后在.gsp中你可以用这种方式制作组合框:
<g:select
name="state"
from="${internetshop.UserOrderState.list()}"
value="${fieldValue(bean: order, field: 'state')}"
optionValue="name"
/>