我有一个将针对 SQL Server 或 Oracle 后端运行的 Grails 应用程序。我正在使用 GORM 作为 ORM。
我想以支持两种数据库类型的方式映射一个大文本字段。在我的 Grails 域类中,我有类似的内容:
class Note {
String content
static constraints = {
content nullable: false, blank: false
}
}
然后我声明如下所示的数据库表:
-- oracle
CREATE TABLE NOTE
(
id NUMBER(19, 0) NOT NULL,
version NUMBER(19, 0) NOT NULL,
content CLOB NOT NULL
);
-- SQL Server
CREATE TABLE NOTE
(
id NUMERIC(19, 0) NOT NULL,
version NUMERIC(19, 0) NOT NULL,
content NVARCHAR(MAX) NOT NULL
);
GORMvalidate
在启动时以模式运行,我找不到 Oracle 和 SQL Server 数据类型和 GORM 映射的组合,它们允许存储或大型文本字段,而没有 GORM 无法正确启动。
我试过了:
将类型设置为
text
inmappings
,但这似乎不起作用。Oracle 抱怨期望该content
字段为 typelong
,而 SQL Servertext
在这些情况下需要 type of 。设置
type
toclob
,它通过模式验证但不允许我将字段设置为字符串值 - GORM 需要类型的数据CLOB
。
我应该如何配置我的数据库定义和 GORM 以使其工作?