Как я могу получить Grails для сопоставления моего поля String с Clob? - PullRequest
6 голосов
/ 14 февраля 2012

Мой класс домена выглядит так:

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 или sqlType: text не работает.

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

Ответы [ 4 ]

11 голосов
/ 14 февраля 2012

Нашел ответ.Ничего подобного , читающему документацию , чтобы что-то выяснить.

Сработавшим изменением было изменение отображения для столбца clob на

foo column: 'STUFF', type: "text"
4 голосов
/ 12 июля 2013

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

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

    static mapping = {  stuff type:'text' }

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

0 голосов
/ 01 июля 2015

Несмотря на то, что фактическим типом столбца БД Oracle является CLOB, type:'text' не помогло, когда dbCreate установлено в validate в DataSource.groovy.

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

static mapping = { stuff sqlType: 'clob' }
0 голосов
/ 14 февраля 2012

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

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

class Foo
{
 Clob stuff
 }
...