java - Java中的结构和数组错误
问题描述
使用 Structs 和 Arrays 处理对象列表时出错。
java.lang.ClassCastException: oracle.sql.StructDescriptor cannot be cast to oracle.sql.ArrayDescriptor
这是代码:
List<Commission> commissions = (List<Commission>) parameter;
Struct[] structs = new Struct[commissiones.size()];
for (int index = 0; index < comisions.size(); index++) {
Object[] params = new Object[9];
Commission commission = commissions.get(index);
/* Setting parameters */
Struct struct = ps.getConnection().createStruct("T_COMMISSION", params);
structs[index] = struct;
}
Array array = ((OracleConnection)ps.getConnection()).createOracleArray("C_COMMISSION", structs);
ps.setArray(i, array);
编辑,添加 T_COMMISSION:
CREATE OR REPLACE TYPE GESFIN.T_COMMISSION AS OBJECT (COM_MZN VARCHAR2(3),
COM_PVP VARCHAR2(8),
-- ..More params)
/
CREATE TYPE C_COMMISSION AS TABLE OF T_COMMISSION
/
解决方案
添加
Struct[] struct = new Struct[params.size()];
改变
Struct struct = ps.getConnection().createStruct("T_COMMISSION", params);
至
struct[index] = ps.getConnection().createStruct("T_COMMISSION", params);
推荐阅读
- console - 无法查看控制台日志消息
- ruby-on-rails - 无法打开到 localhost:9200 的 TCP 连接 - Rails on Docker compose
- ios - SwiftUI 中的结构初始化:在初始化所有存储的属性之前使用“self”
- reactjs - 如何创建一个有限但由 api 调用扩展的“窗口”列表,并且行可以具有不同的高度?
- java - java.time.format.DateTimeParseException:无法在索引 2 处解析文本“13/11/2020”
- javascript - 对于具有对象项目的数组,如何将每个项目的子结构的属性提升/升级到项目的根级别?
- c# - 通过 C# 传递给 AngularJS 的本地 XML 文件下载不起作用
- c++ - 我还需要链接 -std=c++11 吗?
- python - (ValueError:协议消息 StringIntLabelMapItem 没有字段频率)
- unit-testing - 测试 dom 库中的 waitFor 未按预期运行