当延迟加载枚举类型时,Grails Gorm DDL在Postgres 9中失败

时间:2012-04-04 09:43:48

标签: grails enums gorm postgresql-9.1

考虑Grails中的以下域类:

enum MyEnum { One, Two, Three }

class MyClass {
    Collection mys = []
    static hasMany = [
        mys: MyEnum
    ]
    static mapping = {
        mys lazy: true
    }
}

在Postgres 9.1数据库中使用'create-drop'运行应用程序时出现以下错误:

Unsuccessful: create table myclass_mys (myclass_id int8, myenum varchar(-1))
ERROR: syntax error at or near "-"

如果删除延迟映射,错误就会消失。但是,由于其他原因,懒惰是必要的。我目前的解决方法是创建没有延迟映射的数据库,然后更改域类,这在开发环境中非常烦人。

关于如何修复gorm映射以使varchar(-1)像往常一样是varchar(255)的任何想法?

1 个答案:

答案 0 :(得分:0)

请注意,如果在域类中使用枚举但未指定枚举的映射,则会正常创建表。虽然,如果你在映射块中提到你的枚举属性,你会遇到问题。有一种解决方法是将这样的映射添加到您的属性中:

sqlType: "varchar(20)"

所以你可以尝试,但我不知道这是否适用于joinTable。请查看此jira问题以获取更多信息:http://jira.grails.org/browse/GRAILS-8444