【发布时间】:2017-07-18 15:24:44
【问题描述】:
这个问题与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 似乎无法识别 type:'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')
我的理解是 mapping 到 type:text 应该创建 CLOB 类型的变量,它不会自动限制为最大大小 255。
尝试的解决方案
-
grails clean- 应用程序已清理,没有成功 -
grails clean-all- 这不是 Grails 3+ 方法(不起作用) -
grails clean --refresh-dependencies– 清理,但没有成功 - 交换模型中
static constraints和static mapping的顺序,没有成功 - 在我的模型约束中添加了
body maxSize: 5000,没有成功 -
grails url-mappings-report奇怪地完成了引导程序而没有抛出错误。
编辑 1
这可能与继承有关——Text 类当前扩展了 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 容器重命名为content、grails clean,它现在似乎可以工作了。仍然不确定发生了什么,可能是某种缓存问题(?)...
任何帮助都很棒!谢谢大家:)
【问题讨论】:
标签: grails grails-orm grails-domain-class