Postgres smallint[] 到 java short[] 数组
Postgres smallint[] into java short[] array
我在 PostgreSQL 中有一个数据库 table,其中包含一个名为 'data' 的列并键入:smallint[]
我正在尝试将查询中的数据保存到 java short[]
,但出现以下异常:
java.lang.ClassCastException: class [Ljava.lang.Integer; cannot be cast to class [I ([Ljava.lang.Integer; and [I are in module java.base of loader 'bootstrap')"
我的实现:
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());
}
抛出异常@vo.setData((short[]) ar.getArray());
,我试图将 java.sql.Array
转换为 short[]
数组。
从错误信息来看,似乎 getArray
returns 一个 Integer[]
。您必须手动将其转换为 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();
}
我在 PostgreSQL 中有一个数据库 table,其中包含一个名为 'data' 的列并键入:smallint[]
我正在尝试将查询中的数据保存到 java short[]
,但出现以下异常:
java.lang.ClassCastException: class [Ljava.lang.Integer; cannot be cast to class [I ([Ljava.lang.Integer; and [I are in module java.base of loader 'bootstrap')"
我的实现:
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());
}
抛出异常@vo.setData((short[]) ar.getArray());
,我试图将 java.sql.Array
转换为 short[]
数组。
从错误信息来看,似乎 getArray
returns 一个 Integer[]
。您必须手动将其转换为 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();
}