Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgres smallint[]转换为java short[]数组_Java_Sql_Arrays_Postgresql_Classcastexception - Fatal编程技术网

Postgres smallint[]转换为java short[]数组

Postgres smallint[]转换为java short[]数组,java,sql,arrays,postgresql,classcastexception,Java,Sql,Arrays,Postgresql,Classcastexception,我在PostgreSQL中有一个数据库表,其列名为“data”,类型为:smallint[] 我正试图将查询中的数据保存到javashort[]中,但出现以下异常: java.lang.ClassCastException:类[Ljava.lang.Integer;不能强制转换为类[I([Ljava.lang.Integer;和[I在加载程序“引导”的模块java.base中”)” 我的实施: String sql = "SELECT * FROM table" res =

我在PostgreSQL中有一个数据库表,其列名为“data”,类型为:
smallint[]

我正试图将查询中的数据保存到java
short[]
中,但出现以下异常:

java.lang.ClassCastException:类[Ljava.lang.Integer;不能强制转换为类[I([Ljava.lang.Integer;和[I在加载程序“引导”的模块java.base中”)”

我的实施:

String sql = "SELECT * FROM table"
res = executeQuery(stmt, temp);

        ArrayList<VO> vos = new ArrayList<>();
        while (res.next()) {
            VO vo = new VO();
            Array ar = res.getArray("data");
            // vo has a private member data : short[]
            vo.setData((short[]) ar.getArray());
        }
String sql=“从表中选择*
res=执行任务(stmt、temp);
ArrayList vos=新的ArrayList();
while(res.next()){
VO=新的VO();
数组ar=res.getArray(“数据”);
//vo有一个私有成员数据:short[]
vo.setData((short[])ar.getArray();
}

抛出异常@
vo.setData((short[])ar.getArray();
,我试图将
java.sql.Array
转换为
short[]
数组。

从错误消息中,似乎
getArray
返回一个
整数[]
。您必须手动将其转换为
short[]

Integer[] arr = (Integer[]) ar.getArray();
short[] data = new short(arr.length);
for (int i = 0; i < arr.length; ++i) {
    data[i] = arr[i].shortValue();
}
Integer[]arr=(Integer[])ar.getArray();
短[]数据=新短(arr.length);
对于(int i=0;i
谢谢你的回答。这真的很有效。我被困了好几个小时:p。我以为我已经尝试过这个解决方案了。