【发布时间】:2021-10-15 00:30:52
【问题描述】:
使用 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 = ps.getConnection().createStruct("T_COMMISSION", params); structs[index] = struct; -
如果您能提供 T_COMMISSION 的定义,将会有所帮助。它是 ADT 还是 ARRAY 或其他类型的 PLSQL 集合?
-
问题已编辑