2012-06-15 188 views
0

我已經定義了以下域類:Grails領域類

class Content { 

    Map i18nDescription = [:] 
    ... 

} 

如果運行下面的代碼

content.i18nDescription['it'] = "desc desc...." 
content.save() 

我得到以下錯誤:

util.JDBCExceptionReporter ERROR: value too long for type character varying(255) 

(我使用postgres作爲數據庫)

我怎樣才能使用

static constraints = {} 

感謝

+1

是[this SO answer with solution](http://stackoverflow.com/questions/3237393/how-to-adjust-constraints-db-mapping-for-map-within-grails-domain-class)可以接受你呢? – Grooveek

回答

0
static mapping = { 
     title i18nDescription: "text" 
    } 

這將創建一個文本字段增加字段i18nDescription['it']的大小在數據庫中。其中有4000多個字符。

+0

但在這個我的領域不再是一張地圖。我想要一張地圖,因爲我用它來存儲不同語言的相同文本 –

+0

啊,你不能只在一個字段中存儲地圖。您必須創建一個包含這些字段的單獨表格:content_id,key,value –

+0

您可以將地圖分解爲字符串表示形式(這正是Grails似乎在做的事情)並將其保存/加載爲文本塊。我想,你需要創建助手get/set方法來做這個解析。無論哪種方式,您都不在數據庫中存儲「映射」,只是它的字符串表示形式。 – Mike