GORM:不可知地映射大文本字段数据库

2023-12-13

我有一个 Grails 应用程序,它将针对 SQL Server 或 Oracle 后端运行。我使用 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
);

GORM 正在运行validate启动时模式,并且我找不到 Oracle 和 SQL Server 数据类型以及 GORM 映射的组合,这些组合允许存储或大型文本字段而 GORM 无法正确启动。

我努力了:

  • 将类型设置为text in mappings,但这似乎不起作用。 Oracle 抱怨期望content字段的类型long,并且 SQL Server 想要一种类型text在这些情况下。

  • 设置type to clob,它通过了架构验证,但不允许我将字段设置为字符串值 - GORM 需要类型的数据CLOB.

我应该如何配置我的数据库定义和 GORM 才能完成这项工作?


尽管很黑客,最终还是出现了一个解决方案:通过在启动时查询 Grails 配置,您可以选择适当的数据类型。

class Note {

    String content

    static constraints = {
        content nullable: false, blank: false
    }

    static mappings = {
        content sqlType: DbSupport.bigStringType
    }
}

class DbSupport {

    static def getBigStringType() {

        // examine which hibernate dialect is selected, and pick
        // an appropriate type mapping for that database type:
        def dialect = ApplicationHolder.application.config.dataSource.dialect
        switch (dialect) {

            case "org.hibernate.dialect.SQLServerDialect":
                return "nvarchar"
                break

            case "org.hibernate.dialect.Oracle10gDialect":
                return "clob"
                break
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GORM:不可知地映射大文本字段数据库 的相关文章

  • Grails:如何查询多对多映射中的对象?

    您好 我有以下域类 class Student int age static hasMany courses Course class Course String name static hasMany students Student 我
  • Grails 渲染 PDF 文件

    我正在尝试在网页中呈现 PDF 文件 但使用以下语法时 我得到了一个奇怪的字符组合 render file new File path to file pdf fileName myPdfFile pdf 有谁知道除了上面的行之外我还需要添
  • withTransaction 和 withNewTransaction 有什么区别?

    以下动作有什么区别 def someAction User withTransaction and def someAction User withNewTransaction 我什么时候用什么 当 grails 操作仅包含 Transac
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 如何在 JavaFX 中将 FontAwesome 升级到版本 5

    我有一个使用 FontAwesome 图标的 JavaFX 我想使用新版本 5 但似乎已经不起作用了 这是一个用 Groovy 编写的简单演示应用程序 可与旧版 FontAwesome 一起使用 import javafx applicat
  • 与赋值“=”和括号 { } 的使用混淆

    我是 gradle 的新手 对于 groovy 也是如此 我几乎不了解某些概念 并且真的不知道它是否与 groovy 或 gradle 相关 以及需要 google 哪些关键字来获取帮助 我经常被这样的事情绊倒 android some c
  • Spark/Gradle -- 在 build.gradle 中获取 IP 地址以用于启动 master 和worker

    我在基本层面上了解 build gradle 构建脚本的各个移动部分 但无法将它们全部结合在一起 在 Apache Spark 独立模式下 只需尝试从 build gradle 在同一个机器上启动 master 和worker 稍后将使用
  • 使用“评估”功能。为什么它不起作用?

    这段代码 evaluate def test println Test is successful test 结果异常 致命 没有方法签名 script1409644336796288198097 test 适用于参数类型 值 可能的解决方
  • 在grails控制器中识别ajax请求或浏览器请求

    我正在开发一个使用大量ajax的grails应用程序 如果请求是ajax调用 那么它应该给出响应 这部分正在工作 但是如果我在浏览器中输入URL 它应该带我到主页 索引页面而不是请求的页面 下面是ajax调用的示例gsp代码
  • 抑制 Jenkins 文件中的管道输出

    当我在詹金斯上运行构建时 它总是在执行詹金斯步骤时打印管道 控制台当前输出 Build context CI clean app clean BUILD SUCCESSFUL in 22s 2 actionable tasks 2 exec
  • 在 Grails 中创建一个新的资源包?

    我想创建另一个资源包来组织我的 Grails 应用程序 Grails 提供了一个 messages 资源包 我需要创建一个 myApp 资源包 如何创建新的资源包并使用 g message GSP 标记读取其属性 你必须创建一个beangr
  • 使用 JQuery 的 Grails 项目,无需插件

    我正在尝试设置一个简单的 Grails 2 1 1 应用程序 该应用程序将使用 JQuery 我有一个名为 TestController 的控制器和一个位于正确位置的index gsp 我手动添加 JQuery 库 没有使用 Grails
  • Grails、Spring Security Core - 从应用程序中删除 /login/auth

    我在 Grails 应用程序中安装了 Spring Security Core 并使用s2 quickstart 我想要 来处理登录和注销操作 对我来说 这意味着未登录的用户只能访问根页面 而不能访问其他页面 实际上 对于没有角色 ROLE
  • 模块化大型 Grails 应用程序的最佳实践?

    我正在开发的 Grails 应用程序变得相当大 最好将其重构为几个模块 这样我们就不必每次都重新部署整个事情 将 Grails 应用程序拆分为多个模块的最佳实践是什么 特别是 我想创建一个域类 相关服务的包 并将其作为模块在应用程序中使用
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • 如何检测 URL 映射中的片段标识符?

    In a Grails http www grails org 项目我正在尝试根据是否存在来映射 Url片段标识符 http en wikipedia org wiki Fragment identifier 片段标识符不是 URL 的一部
  • 在 Grails 中使用 Spring-Security 前/后注释

    我正在使用 Grails Spring Security 插件 Spring Security Core 1 0 1 它又使用 spring security 3 0 2 RELEASE 开发 Grails 版本 1 3 3 Web 应用程
  • 在 Groovy 中将整数转换为 BigDecimal

    假设我们有一个 groovy 函数作为参数BigDecimal void func BigDecimal bd 并在 groovy 的其他课程中再次调用它var func 0 这工作正常 但在 java 中它根本无法编译 我知道有一个构造函
  • 如何在我的应用程序中取消授权/撤销 LinkedIn 令牌

    我有一个 grails 应用程序 我希望用户授予我访问他 她的 LinkedIn 帐户的权限 以获取信息并以不同的方式显示信息 我能够执行以下操作 获取授权码 使用该授权码获取访问令牌 我将该访问令牌与到期日期一起存储在我的用户实体中 当过
  • Grails GORM 和枚举

    我在 Grails 中使用枚举时遇到问题 我尝试在 grails 域对象中使用枚举 code package it xxx tools kanban import java util Date class Task String name

随机推荐

  • DateTime.ParseExact 忽略第一个字符 C#

    I get a string来自像 这样的设备的价值 1140421164500 我必须将其转换为DateTime类型 我想用DateTime ParseExact功能 我知道我可以通过手动省略第一个字符来转换它 如下所示 DateTime
  • OnTriggerEnter 被调用但变量从未设置

    我开始使用 C 慢慢学习 Unity 到目前为止真是太棒了 我遇到了一个小问题 我希望这是一个小问题 并陷入困境 从那以后我一直在怀疑自己的理智 在首先运行的主脚本中 我有一些代码可以动态生成一个基元 球体 并向其附加一个脚本 脚本检查球体
  • 删除 UITableViewCell 上的填充

    On a UITableViewCell with UITableViewCellStyleSubtitle样式 我正在设置imageView image textLabel text and detailTextLabel text 细胞
  • 找不到如何对这个数字模式进行编程

    数字模式 我被要求输入一个数字 rc 并基于 rc 构造这个模式 我可以初始化表格 但没有突出显示的数字 int num2 new int rc rc counter 1 for int i 0 i lt rc i if i 0 count
  • 如何在Android Studio中通过API调用实现autocompletetextview?

    我正在尝试使用 Android Studio 中的 autocompletetextview 为用户输入的每个字母提供建议 每次键入一个字母时 都会像这样进行 API 调用 http dev markitondemand com MODAp
  • 在模板类中编写友元函数声明的正确方法是什么?

    我正在尝试编写自己的向量模板类 但在编写友元函数声明时遇到一些问题 一开始我是这样写的 template
  • 在代码隐藏中获取 ASP.Net 页面的 URL [重复]

    这个问题在这里已经有答案了 我有一个 ASP Net 页面 该页面将托管在几个不同的服务器上 并且我希望获取该页面的 URL 或者更好 托管该页面的站点 作为字符串以在代码隐藏中使用 有任何想法吗 用这个 Request Url Absol
  • 使用 cross_val_score 与 pipeline 和 GridSearch 进行嵌套交叉验证

    我正在 scikit 工作 正在尝试调整我的 XGBoost 我尝试使用嵌套交叉验证 使用管道重新缩放训练折叠 以避免数据泄漏和过度拟合 并与 GridSearchCV 并行进行参数调整和 cross val score 以在最后获得 ro
  • 如何更改使用 PHP Imagick 的 newPseudoImage 函数绘制的标题的颜色?

    我正在使用以下命令创建带有标题的图像Imagick newPseudoImage函数如下 txt new Imagick txt gt setFont templates fonts Gloria ttf txt gt setGravity
  • Seaborn countplot 设置 x 值的图例

    我正在绘制分类数据和值计数sns countplot 我试图将 x 值的图例添加到图中 如下所示 句柄是 x 值的集合 标签是 x 值的描述 ax sns countplot x df GARAGE DOM handles labels a
  • GeneralBlock-56 在 UIWebView 中调用 loadRequest 时内存泄漏

    我正在开发一个 iPad 应用程序 并一直在使用 XCode 4 中的 Instruments 对其进行分析 我正在对实际设备本身进行分析 iOS 4 3 已安装 Instruments 告诉我有一些内存泄漏 泄漏的对象主要是General
  • C# 打开 SQLite 文件

    我想在 C 中打开 SQLite DB 文件 我从 Visual Basic 源代码重写了这段代码 SqlConnection myConnection new SqlConnection myConnection ConnectionSt
  • 弹出菜单项图标

    我的应用程序有问题 我需要展示一个PopupMenu我需要此菜单中的每个项目都包含文本和图像 图像应显示在文本的左侧 但它没有显示 有什么建议如何实现它吗 我的代码到目前为止 public void showMenu Button butt
  • 用 swig 包装专门的 C++ 模板类

    考虑以下类声明 namespace X template
  • Python BeautifulSoup 返回空列表

    我正在尝试创建一个 Python 脚本来使用 BeautifulSoup 从 tcgplayer com 获取 Yugioh 卡的价格 当您在此网站上搜索卡片时 它会返回一页搜索结果 其中包含来自不同卖家的多个价格 我的目标是拉低所有这些价
  • mapViewDidLoad方法未加载

    目标c的新手 我正在使用ArcGIS作为地图部分 我的方法有问题mapViewDidLoad没有被调用 加载 这是代码的一部分 h file interface ViewController UIViewController
  • 从 SPARK 中的另一个 RDD 返回最大 N 值的 RDD

    我正在尝试过滤元组 RDD 以根据键值返回最大的 N 个元组 我需要返回格式为 RDD 所以RDD 4 a 12 e 2 u 49 y 6 p 过滤最大的 3 个键应该返回 RDD 6 p 12 e 49 y Doing a sortByK
  • C 3d 字符数组

    char monsternivel1 3 4 Rat Bat Spider Goblin Orc Drawf Dragon Lich Banshee Demon Hydra Giant Spider 它说 gt E Dungeon Craw
  • 从 JSON 输出中选择字段

    使用Python 我如何提取字段id到一个变量 基本上 我要改变这个 accountWide true criteria description some description id 7553 max 1 orderIndex 0 类似的
  • GORM:不可知地映射大文本字段数据库

    我有一个 Grails 应用程序 它将针对 SQL Server 或 Oracle 后端运行 我使用 GORM 作为 ORM 我想以支持两种数据库类型的方式映射大型文本字段 在我的 Grails 域类中 我有类似的内容 class Note