使用Enums作为具有MSSQL Dialect的域中的属性

时间:2015-09-21 18:15:39

标签: sql-server grails enums gorm

这是grails 2.4.4个应用程序。大多数时候,我使用MySQL,这总是有效的。它也适用于H2。我只是以MSSQL作为数据库引擎来解决这个问题。

我有以下枚举:

enum RenewalStatuses {

    RETRIEVAL_COMPLETE('Retrieval Complete'),
    STAGING_COMPLETE('Staging Complete'),
    XML_COMPLETE('XML Complete'),
    SUBMIT_COMPLETE('Submit Complete'),
    CONVERT_FAILURE('Convert Failure'),
    SUBMIT_FAILURE('Submit Failure')

    private final value

    RenewalStatuses(String value) {
        this.value = value
    }

    @Override
    String toString() {
        value
    }
}

在以下域中使用:

class RenewalStatus {

    Date currentStatusDate
    RenewalStatuses currentStatus
    String errorText

    static hasMany = [renewalStatusLogs: RenewalStatusLog]

    static constraints = {
        currentStatusDate nullable: false
        currentStatus nullable: false, blank: false, maxSize: 20
        errorText nullable: true, blank: false, maxSize: 200
    }

    static mapping = {
        version false
        currentStatusDate column: 'CurrentStatusDt'
        currentStatus column: 'CurrentStatus'
        errorText column: 'ErrorText'
    }
}

当我尝试查询RenewalStatus或其列表时,我收到以下错误:

  

枚举类的未知名称值[XML Complete]   [bla.foo.RenewalStatuses]

CurrentStatus列是varchar,包含枚举值属性中定义的值文本; XML Complete, Submit Failure, etc

同样,我在很多应用程序中使用此模式,但这是第一次使用MSSQL支持的应用程序。

0 个答案:

没有答案