2014-06-25 60 views
0

我有一個帶有Joda LocalDate屬性的域類。此屬性必須是唯一的。Grails:Joda LocalDate作爲MySQL數據庫中的唯一鍵碼

它可以使用H2,但使用MySQL數據庫我有app啓動這個錯誤:

[SchemaExport.create(l.386)]Unsuccessful: create table [...] 
[SchemaExport.create(l.387)]BLOB/TEXT column 'mydate' used in key specification without a key length 

如果刪除唯一約束,它的工作原理也與MySQL。

這是一個錯誤還是我的誤解?

我正在使用Grails 2.2.5。 這裏域片段:

class MyClass { 
    LocalDate mydate 

    static constraints = { 
     mydate(nullable:false, unique:true) 
    } 
} 

DataSource配置片段:

dataSource { 
    dbCreate = "create-drop" 
    driverClassName = "com.mysql.jdbc.Driver" 
    dialect = org.hibernate.dialect.MySQL5InnoDBDialect 
    username = "xxx" 
    password = "xxx" 
    dbNamer = "myapp" 
    url = "jdbc:mysql://localhost:3306/${dbNamer}?autoreconnect=true" 
    logSql = true 
} 

回答

0

胡亂猜測,我認爲date是MySQL中保留字。重命名字段,然後再試

更新:

好的,我明白了。 的問題是,GORM/Hibernate是不知道喬達LocalDate類的,所以它試圖爲它創建一個BLOB列:

[SchemaExport.create(l.387)BLOB /文本列「指明MyDate 「`。

要解決它,你可以使用一個自定義的Hibernate類型(不知道如何),或保存屬性轉換成平面Java的Date類,並回到LocalDate加載

+0

沒有,對不起後:我正在使用意大利的房產名稱。我翻譯它爲Stackoverflow :)。 爲了避免誤解,我編輯了我的帖子。 –

+0

他們是解決方法,但幾個月後,我認爲沒有其他解決方案。謝謝。 –