GORM无法识别类型:'text'映射

时间:2017-07-18 15:24:44

标签: grails gorm grails-domain-class

此问题类似于this post - 但答案不适用于此处。我目前只在开发中工作,并使用dbCreate: create-drop

配置为url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE

使用Grails 3.0.11 - GORM似乎无法识别类型:'text'映射。这是我的模特:

package mypackage

class Text extends Object {

    String body
    Media image

    boolean textFirst = true

    static constraints = {
        image nullable:true
    }

    static mapping = {
        body type: 'text'
    }
}

引导一些数据,我被抛出这个错误:

ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Value too long for column "BODY VARCHAR(255)": "'<p>some copy... (1222)"; SQL statement:
insert into object (id, date_created, description, heading, last_updated, title, two_col, body, image_id, text_first, class) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'mypackage.Text')

我的理解是mappingtype:text应该创建CLOB类型变量,它自动不会被限制为最大大小255.


尝试解决方案

  1. grails clean - 申请已清理,但未成功
  2. grails clean-all - 这不是Grails 3+方法(不起作用)
  3. grails clean --refresh-dependencies - 清理,但没有成功
  4. 在模型中交换了static constraintsstatic mapping的顺序,但没有成功
  5. 为我的模型约束添加了body maxSize: 5000,没有成功
  6. grails url-mappings-report奇怪地完成了Bootstrap而没有抛出错误。

  7. 编辑1

    这可能与继承有关 - Text Class当前扩展了Object。按如下所示更改Text模型,Bootstrapping成功。有人能为我提供一些见解吗?

    package mypackage
    
    class Text {
    
        String body
        Media image
    
        boolean textFirst = true
    
    
        static constraints = {
            image nullable:true
        }
    
        static mapping = {
            body type: 'text'
    
        }
    }
    

    这是mypackage.Object:

    package mypackage
    
    class Object {
    
        String title
        String heading
        String description
    
        Date dateCreated
        Date lastUpdated
    
        boolean twoCol = false
    
        static constraints = {
            heading nullable: true, maxSize: 3000
            description nullable: true, maxSize: 500
        }
    
        static mapping = {
            version false
        }
    }
    


    编辑2

    body容器重命名为contentgrails clean,现在似乎正在运行。仍然不确定发生了什么,可能是某种缓存问题(?)......

    任何帮助都很棒!!谢谢大家:))

2 个答案:

答案 0 :(得分:0)

请试试这个

static mapping = {
        body sqlType: 'text'
    }

答案 1 :(得分:-1)

请试试这个

静态映射= {         体型:'文字'     }