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

如何在Kotlin中从AWS QLDB的driver.execute返回指定对象

在Kotlin中从QLDB的driver.execute方法返回指定对象

你当前的代码有两个核心问题:一是存在语法错误,二是没有正确处理Result对象来提取目标数据。

问题1:语法错误

你的代码里txn.execute("SELECT * FROM Table")后面多了一个多余的右括号,这会直接导致编译失败,先把这个括号删掉。

问题2:未正确转换Result为目标对象

QLDB的Result本质是IonValue的迭代器,不能直接强转为IonStruct。你需要像Java示例那样遍历结果,提取需要的对象。

修正后的完整示例代码

如果要返回查询结果中的所有IonStruct:

val executionReturn = driver.execute { txn: TransactionExecutor ->
    val result: Result = txn.execute("SELECT * FROM Table")
    // 遍历Result,把每个IonValue转为IonStruct并收集到列表
    result.map { it as IonStruct }.toList()
}

// 使用返回的列表
executionReturn.forEach { struct ->
    // 处理每个IonStruct,比如获取字段值
    val fieldValue = struct.get("yourFieldName").stringValue()
}

如果只需要返回第一个结果:

val executionReturn = driver.execute { txn: TransactionExecutor ->
    val result: Result = txn.execute("SELECT * FROM Table")
    // 取第一个结果,转为IonStruct,没有结果的话返回null
    result.firstOrNull() as? IonStruct
}

executionReturn?.let { struct ->
    // 处理单个IonStruct
}

关键说明

  • driver.execute的lambda表达式最后一行的返回值,就是整个execute方法的返回值,和Java示例中匿名函数的return逻辑一致。
  • 一定要遍历Result来提取IonValue,因为Result本身不是集合,是懒加载的迭代器,直接强转会抛出类型转换异常。

内容的提问来源于stack exchange,提问作者André Luís Oliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:40:40