考虑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)的任何想法?
答案 0 :(得分:0)
请注意,如果在域类中使用枚举但未指定枚举的映射,则会正常创建表。虽然,如果你在映射块中提到你的枚举属性,你会遇到问题。有一种解决方法是将这样的映射添加到您的属性中:
sqlType: "varchar(20)"
所以你可以尝试,但我不知道这是否适用于joinTable。请查看此jira问题以获取更多信息:http://jira.grails.org/browse/GRAILS-8444