2014-03-19 24 views
0

我有這個域類:如何將一個字符串保存爲一列太大?

class Jobs { 

String query 

static constraints = { 
    query(maxSize: 63760) 
    query type: "text" 
} 

static mapping = { 
//And I tried all this: 
// sqlType: "char", length:63760 
// query sqlType: DbSupport.bigStringType 
// table 'HYPJobs' 
//query sqlType: "text" 
//query(nullable: true, maxSize: 64000) 
// query type:'materialized_clob',sqlType: "clob" 
} 

} 

但是當我運行它,我仍然有這樣的錯誤:

ORA-12899:。值太大,列 「MYPROJECT」 「JOBS」 「QUERY」 (實際:1395,最大值:255)

任何???

+0

你嘗試靜態映射= {查詢類型: '文本'}? –

+0

是的!我做到了,所有可能的組合都在我的絕望中! –

+0

DataSource.groovy中的dbCreate設置是什麼? –

回答

1

這應該工作

class Jobs { 

    String query 

    static constraints = { 
    query maxSize: 63760 // remove this unless you really want to limit the size to 63760 
    } 

    static mapping = { 
    query type: 'text' 
    } 
} 
1

從錯誤消息中,實際表列是varchar2(255),並且您試圖插入一個包含1395個字符的值。

如果需要更長的值,則需要增加數據庫中的列長。儘管(不管怎樣,直到12c),你不能超過4k,但列數爲varchar2;如果您實際需要的值高達64k,那麼您需要將該列設置爲clob。只需更改Groovy中的聲明(或任何我不確定varchar(63760)的位置!)將不會影響數據庫本身的列大小。

相關問題