2012-04-04 73 views
0

懶加載枚舉類型考慮的Grails以下領域類:Grails的格姆DDL Postgres裏9時失敗

enum MyEnum { One, Two, Three } 

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

當運行與應用「創建降」一個Postgres 9.1數據庫,我得到以下錯誤的:

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

如果我刪除了惰性映射,錯誤消失。然而,由於其他原因,懶惰是必要的。我目前的解決方法是創建數據庫,沒有懶惰的映射,然後更改域類,這在開發環境中非常煩人。

有關如何修復gorm映射的任何想法,以便像往常一樣varchar(-1)將varchar(255)?

+0

你在DataSources.groovy中使用了特定的方言嗎? – 2012-04-04 11:39:24

+0

我嘗試使用org.hibernate.dialect.PostgreSQLDialect和net.sf.hibernate.dialect.PostgreSQLDialect獲得相同的結果。 – johanneslink 2012-04-04 12:43:53

回答

0

請注意,如果您在域類中使用枚舉但未指定枚舉的映射,則表格是正常創建的。儘管如果你在映射塊中提到你的enum屬性,你會遇到問題。有一種變通方法添加這樣的映射到你的財產:

sqlType: "varchar(20)" 

所以,你可以嘗試,但我不知道是否這雖然工作在一個joinTable。看看這jira問題的更多信息:http://jira.grails.org/browse/GRAILS-8444