java - 将 PgArray 或 java.sql.Array 转换为 Scala 集合
问题描述
我有一个 postgres 查询,它使用该array_agg()
函数返回一个 PgArray 值。用一个简单的方法运行这个查询,java.sql.PreparedStatement
我得到一个java.sql.ResultSet
.
在val arrayCol = resultSet.getArray("array_agg_column_name")
我有一个java.sql.Array
打印 arrayCol 看起来像
{1, 2, 3}
打电话arrayCol.getArray
给我一个Object
我不确定如何在我的 Scala 代码中使用 Object 或 java.sql.Array 类型。做一个简单的asInstanceOf[List[Int]]
失败
java.lang.ClassCastException: [Ljava.lang.Integer; cannot be cast to scala.collection.immutable.List
而套管与asInstanceOf[Array[Int]]
导致
java.lang.ClassCastException: [Ljava.lang.Integer; cannot be cast to [I
如果我import scala.collection.JavaConverters._
然后尝试使用asScala
我得到
value asScala is not a member of Object
或“... of java.sql.Array”,取决于我是否调用getArray
.
array_agg
解析由 psql函数产生的字段的正确方法是什么?
解决方案
您仍然可以Array[AnyRef]
通过遍历数组将其转换为另一种类型。
val arrayCol = resultSet.getArray("array_agg_column_name")
.getArray().asInstanceOf[Array[AnyRef]]
val ans = arrayCol.map(i => i.asInstanceOf[Int])
推荐阅读
- html - 显示所有正确 CSS 设置的图像边框线
- react-native - 改变风格反应原生材料下拉
- r - 如何使用 R 中的枢轴连接不连续的列
- python - 按日期过滤 ListView 中的对象 - Django
- ios - 数组元素拼接字符
- google-home - 更改 Wifi 密码后无法访问 Google Home Mini
- javascript - 我不明白为什么当两个代码明显相同时会发生这种情况
- google-apps-script - 使用 Google App Script 而非 Google Drive API 存储应用程序特定数据
- hl7-fhir - 验证资源是否符合搜索条件?
- c# - 从 C# 中的方法返回泛型列表