Grails 如何使枚举字段成为tinyint而不是varchar?
我有一个定义为的域类Grails 如何使枚举字段成为tinyint而不是varchar?,grails,groovy,grails-2.0,Grails,Groovy,Grails 2.0,我有一个定义为的域类 class QuestionSurvey { String questionText QuestionTypeSurvey questionType static hasMany = [options: QuestionOptionSurvey] static constraints = {} } 现在,在上面的域QuestionTypeSurvey中有一个enum类,我在src/groovy中定义了这个类,因为我不希望这个字段有一个
class QuestionSurvey {
String questionText
QuestionTypeSurvey questionType
static hasMany = [options: QuestionOptionSurvey]
static constraints = {}
}
现在,在上面的域QuestionTypeSurvey中有一个enum类,我在src/groovy中定义了这个类,因为我不希望这个字段有一个单独的表。问卷类型调查的定义如下:
enum QuestionTypeSurvey {
TEXT_FIELD,
TEXT_AREA,
RADIO_BUTTON,
DROPDOWN_BOX,
CHECK_BOX
}
现在,当我运行应用程序并查看表结构时,我注意到QuestionSurvey表中的questionType字段不是我所期望的很小的int,因为它指向一个枚举,而是VARCHAR。我感到困惑。因为这是使用枚举而不是字符串的全部目的,所以是否有必要将类型设置为tinyint而不是varchar?谢谢你的帮助 您可以在域类中添加映射配置,以便将枚举存储为int。我不知道怎样才能把它变成一个小玩意儿,但至少它不是一个小玩意儿
static mapping = {
questionType enumType: 'ordinal'
}
Grails文档:
如果需要,还可以将id字段添加到Enum类并定义要存储的值。