2012-02-13 3 views
6

Мой класс домен выглядит следующим образом:Как заставить Grails отобразить мое поле String в Clob?

package com.initech.tps 

class Foo 
{ 
    String stuff 

    static mapping = { 
     // mapping to a legacy table as opposed to letting Grails create it 
     table name: 'FOO', schema: 'TPS' 
     id generator: 'sequence', params: [sequence: 'MY_SEQ'], 
      column: 'FOO_ID', sqlType: 'integer' 
     foo column: 'STUFF' 
    } 

    static constraints = { 
     stuff(nullable: true, maxSize: 40000) 
    } 
} 

Я был под впечатлением Grails бы выяснить, использовать CLOB вместо VARCHAR на основе моего прохождения в достаточно большом для ограничения MaxSize, а я получаю это сообщение об ошибке в консоли:

org.hibernate.HibernateException: Wrong column type in FOO for column STUFF. 
Found: clob, expected: varchar(40000) 

Нужен ли ячный тип sqlType для отображения? Я пробовал использовать разные значения maxSize и вообще не оставлял его без разницы. Также добавление sqlType: clob или не работает.

Я нахожусь на Grails 1.3.7, используя IBM DB2-Express.

ответ

9

Найден ответ. Ничего подобного reading the documentation, чтобы найти что-то.

Изменения, которые работали изменял отображение столбца CLOB в

foo column: 'STUFF', type: "text" 
0

Я использовал данные «Clob data» в своем проекте Grails и отлично работал.

Можете ли вы использовать Clob?

class Foo 
{ 
Clob stuff 
} 
+0

Это будет одним из способов сделать это, я думаю. Мне бы очень хотелось увидеть ответ, который позволяет мне использовать строку в объекте домена. Для этого должен быть тип UserType. –

3

Я знаю, что это слишком поздно, но и для будущих ссылок:

просто необходимо добавить отображение

static mapping = { stuff type:'text' } 

И все, грайль меняет тип данных на clob или любой другой, который может содержать большие строки, основанные на базе данных, которую вы используете.

0

Хотя фактический тип столбца DB DB - CLOB, type:'text' не помогло, когда dbCreate установлено в validate в DataSource.groovy.

Но это работает для моего Grails 2.2.0:

static mapping = { stuff sqlType: 'clob' }