-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) 的任何想法?

4

1 回答 1

0

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

sqlType: "varchar(20)"

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

于 2012-04-20T19:53:31.830 回答