You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jOOQ创建含非空array(row)列的MyRecord并插入Trino

解决方案:给Trino的array(row)类型列设置值(Kotlin)

针对你遇到的Trino数据库array(row(id varchar, version varchar))类型列,结合jOOQ生成的MyRecord类,有以下几种方式在Kotlin中设置非空的categoryids值:

方式1:使用jOOQ生成的Row对应Record类(推荐)

如果jOOQ代码生成器为row类型生成了对应的Record类(比如CategoryIdRecord,包含id和version属性),可以直接构造该类的实例数组:

myRecord.apply {
    categoryids = arrayOf(
        CategoryIdRecord().apply {
            id = "category-1"
            version = "1.0"
        },
        CategoryIdRecord().apply {
            id = "category-2"
            version = "2.0"
        }
    )
}

这种方式类型最安全,能避免字段顺序错误的问题。

方式2:使用基础Object数组构造Row元素

如果没有生成对应的Record类,可以直接用Object数组表示每个row的字段值,注意顺序必须和row定义的id varchar, version varchar完全一致:

myRecord.apply {
    categoryids = arrayOf(
        arrayOf("category-1", "1.0"),
        arrayOf("category-2", "2.0")
    )
}

方式3:使用jOOQ DSL构造Row元素

借助jOOQ的DSL.row()方法构造类型安全的row元素,再组成数组:

import org.jooq.DSL

myRecord.apply {
    categoryids = arrayOf(
        DSL.row("category-1", "1.0"),
        DSL.row("category-2", "2.0")
    )
}

注意事项

  • 无论哪种方式,都要保证row元素的字段顺序和数据库中定义的row(id varchar, version varchar)完全匹配,否则会导致字段值错位。
  • 以上构造的数组都能被jOOQ正确映射为Trino的array(row(...))类型,直接用于insertInto操作即可。

内容的提问来源于stack exchange,提问作者Pablo Cavalieri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 12:43:11