从Resultset scala中检索对象数组

Posted

技术标签:

【中文标题】从Resultset scala中检索对象数组【英文标题】:Retrieving Array of object from a Resultset scala 【发布时间】:2019-01-25 00:23:47 【问题描述】:

尝试使用 resultSet.getArray("variables") 从配置单元 JDBC ResultSet 检索 Array 对象,但收到错误为 Java.sql.SQLException: Method Not Supported

代码:

case class Variables(val variable:String, val type:String, val value:String)
case class Updates(val title:String, val variables:Array[Variables])

val resultSet = stmt.executeQuery("select * from updates")

val collection = new Iterator[Updates]
def hasNext = resultSet.next()
def next = Updates(resultSet.getString("title"),resultSet.getArray("variables").getArray.asInstanceOf[Array[Variables]])
.toStream

错误:

Java.sql.SQLException: Method Not Supported at org.apache.hive.jdbc.HiveBaseResultSet.getArray(HiveBaseResultSet.java:117)

另外请建议是否有任何直接方法将resultSet 对象转换为case class Updates 而无需此转换。

谢谢

【问题讨论】:

【参考方案1】:

你尝试过使用.getObject函数吗?

getObject(int columnIndex, Class<T> type) or
getObject(String columnLabel, Class<T> type)

【讨论】:

此错误表明不支持Array[Variables],因此您可以尝试使用play.api.libs.json._,然后尝试为您的案例类创建隐式转换来进行转换。 不支持相同的错误方法 resultSet.getArray("variables") 您是否尝试检查此代码是否运行? 所以意味着您使用的方法不受您使用的版本的支持,或者可能已弃用兄弟。请参考您使用的版本的官方文档。 显然,getObject 最终会在这里抛出一个异常。代码:github.com/apache/hive/blob/…

以上是关于从Resultset scala中检索对象数组的主要内容,如果未能解决你的问题,请参考以下文章

java:把查询结果存储到resultSet对象中,在把该对象的数据放置在一个JTable对象中

c# - 从对象数组中检索一个值

将 JDBC ResultSet 映射到对象

使用 underscore.js 从对象/数组中仅检索一个字段

使用 Cloudant 从 JSON 数组中检索 JSON 对象

使用swiftyjson从索引对象数组ios中检索json的标题