java - Postgres smallint[] 转换成 java short[] 数组
问题描述
我在 PostgreSQL 中有一个数据库表,其中有一列名为“数据”并键入:smallint[]
我正在尝试将查询中的数据保存到 javashort[]
中,但出现以下异常:
java.lang.ClassCastException: 类 [Ljava.lang.Integer; 不能转换为类 [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
返回一个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 - 使用 PowerShell 批量复制 PostgreSQL
- reactjs - 从导航页面 Y 路由到页面 X 的部分 ABC
- mysql - 选择日期范围与条件之间的日期列表
- sql - 通过 Flyway 添加表格时出现语法错误
- symfony - 如何使用 GraphQL 正确获取嵌套集合?
- laravel - 无法在共享/VPS 服务器上的 ssl(https) 上运行 Laravel Websockets
- r - 当另一列值高于 R 中的阈值时替换列的特定部分
- python - 带有 plyer 的 Android 应用程序无法启动。我错过了什么吗?
- netsuite - SuiteScript 2 从儿童助理返回到家长助理
- spring-boot - MongoDbConverters 用于多态类型的混合集合