gpt4 book ai didi

grails 枚举或字符串属性, future 的数据库更新有什么区别?

转载 作者:行者123 更新时间:2023-12-02 15:13:59 25 4
gpt4 key购买 nike

假设使用约束将优先级属性创建为字符串:

priority(inList:['Critical', 'Major', 'Normal', 'Enhancement'])

另一种方法可能是以这种方式使用枚举:
enum Priority { CRITICAL, MAJOR, NORMAL, ENHANCEMENT }  or
enum Priority { CRITICAL('Critical'), MAJOR('Major'), NORMAL('Normal'), ENHANCEMENT('Enhancement')

Priority priority
...

可能还有以下内容,具体取决于上面如何定义枚举:
static mapping = { priority enumType:"ordinal"} 

我的问题是,添加 future 的枚举值是否可以很好地与数据库一起使用,只要最后添加它们?此外,如果我确实希望更改枚举值的解释,那么最好的方法是这样做,例如:
 ... NORMAL('Minor')

或者如果我只是根据需要更改列表中的第三项,例如,事情是否会正常运行
    MINOR or  MINOR('Minor')

最佳答案

它们出现的顺序无关紧要。在内部,Grails 只会在给定字符串表示的情况下进行 valueOf 查找。现在,如果您没有适本地更新数据库,更改一个名称将导致问题。如果您知道这会发生,那么在生产中,您可能会重新考虑枚举并使用类型表作为引用。这样,您只是使用 ID,因此字符串值是什么并不重要。

我倾向于使用 2 的某种组合。我知道硬常数和快速常数的枚举通常会在生产中保持稳定。但是在用户需要能够添加/修改/删除各种值的情况下键入表,或者如果我知道我将拥有某种类型的数据仓库,由于外键,键入表会更好/更快,使用您的工厂存储系统(MySQL、Postgres 等)的运行。

关于grails 枚举或字符串属性, future 的数据库更新有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com