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

Scala使用Jooq向PostgreSQL插入数组字段遇类型转换异常求解决

解决Scala List[Long]转数组导致ClassCastException的问题

问题根源

Scala中List[Long].toArray默认会生成基本类型long[],而jOOQ需要的是包装类型Long[](属于Object[]子类),直接传入会触发类型转换异常。

可行解决办法

  • 显式指定数组类型:调用toArray时传入包装类型的数组模板,强制生成Long[]:

    val dimensionCodesArray: Array[Long] = dimensionCodes.toArray(new Array[Long](0))
    

    或者直接指定泛型参数:

    val dimensionCodesArray: Array[Long] = dimensionCodes.toArray[Long]
    
  • 借助Java集合转换:通过Scala的Java集合转换器转成Java List<Long>,再调用其toArray方法生成包装类型数组:

    import scala.jdk.CollectionConverters._
    
    val dimensionCodesArray: Array[Long] = dimensionCodes.asJava.toArray(new Array[Long](0))
    
  • 手动构建数组:遍历List元素构建包装类型数组(适合小批量数据):

    val dimensionCodesArray: Array[Long] = Array.tabulate(dimensionCodes.size)(i => dimensionCodes(i))
    

这些方法都能确保生成Long[]数组,适配jOOQ的参数要求,避免ClassCastException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:27:33