我正在开发一个使用 Oracle 10g 和 Grails v2.0.1 的项目。
我正在尝试对我的 Domain 类中的文本输入字段使用 CLOB 数据类型,但它似乎不起作用。我的第一次尝试是基于我在这里读到的关于 GORM的内容,其中说使用type: 'text'
,就像这个例子:
class Address {
String number
String postCode
static mapping = {
postCode type: 'text'
}
}
Grails 将其映射到LONG
我的数据库中的数据类型,这是不可取的
第二次尝试是尝试type: 'clob'
。这在使我的 DB 数据类型为 CLOB 方面很有效,但导致了类转换错误,因为属性本身被定义为字符串,即String postCode
. (请注意,我从未type:'clob'
在文档中看到过,但我可以从方言类中推断出clob
可能是那里的有效输入)
我随后尝试将属性定义为java.sql.Clob
, ie Clob postCode;
,但这根本不起作用。没有错误消息,但也没有任何东西被持久化到数据库中。
我采取了保留该Clob
方法的最后一步,但使用了一个瞬态String
属性,其中 getter/setter 尝试将瞬态 String 值映射到持久 Clob 字段。但我无法弄清楚如何将我的字符串值放入 Clob。Grails 不会抛出错误,但println()
在我尝试分配之后永远不会打印。我试过用myClob.setString(1, theString)
做作业,但没有成功。
所以长话短说,我似乎无法在我的场景中使用 Clob,我想知道是否有其他人已经看到并能够克服它。如果是这样,你能告诉我我可能做错了什么吗?
或者...有没有办法覆盖 Grails 选择的数据类型,以便我可以强制它映射postCode type: 'text'
到 a CLOB
?我不精通Hibernate,所以如果有办法,我不知道该怎么做。
旁注:在我们从 Grails 1.3.7 升级到 2.0.1 之前,我很确定type: 'text'
确实映射到 Oracle 中的 CLOB。所以这对 2.0.1 来说可能是新的。