Thanks for the reply. Although this approach may work for arrays of Strings, it does not seem to work for arrays of Oracle object.
I have an error object defined as:
Code:
CREATE OR REPLACE TYPE ERRORRECTYPE AS OBJECT
(RECTYPE VARCHAR2(100)
,RECID VARCHAR2(32)
,ERROR VARCHAR2(1000)
,TYPE VARCHAR2(30)
,NAMETYPE VARCHAR2(30)
,NAME VARCHAR2(255)
,EFFECTIVEDATE DATE
)
I used JPublisher to generate a Java class to map this type to. It is called OracleError.
Then my array is defined as:
Code:
CREATE OR REPLACE TYPE ERRORLISTTYPE AS TABLE OF ERRORRECTYPE
My Java code looks like this:
Code:
declareParameter(new SqlOutParameter("PERRORLIST", Types.ARRAY, "ERRORLISTTYPE"));
Code:
public String execute(String entityType, Date effectiveDate,
Date terminationDate, String user, List roles) {
Map out = execute(new ParameterMapperImpl(entityType,
effectiveDate, terminationDate, user, roles));
Array errors = (Array) out.get("PERRORLIST");
OracleError oracleErrors[] = null;
try {
Object array = errors.getArray();
oracleErrors = (OracleError[]) array;
} catch (Throwable e) {
e.printStackTrace();
}
return (String) out.get("PENTITYID");
}
I am also setting the connection type map with:
Code:
Map typeMap = new HashMap();
typeMap.put("ERRORRECTYPE", OracleError.class);
connection.setTypeMap(typeMap);
However, the "errors.getArray()" call throws this exception:
Code:
java.lang.NullPointerException
at oracle.jdbc.driver.OracleConnection.safelyGetClassForName(OracleConnection.java:4974)
at oracle.jdbc.driver.OracleConnection.addClassMapEntry(OracleConnection.java:2801)
at oracle.jdbc.driver.OracleConnection.addDefaultClassMapEntriesTo(OracleConnection.java:2792)
at oracle.jdbc.driver.OracleConnection.initializeClassMap(OracleConnection.java:2478)
at oracle.jdbc.driver.OracleConnection.ensureClassMapExists(OracleConnection.java:2472)
at oracle.jdbc.driver.OracleConnection.getTypeMap(OracleConnection.java:2778)
at oracle.sql.ARRAY.getMap(ARRAY.java:768)
at oracle.sql.ARRAY.getArray(ARRAY.java:275)
...
I'm thinking that the getArray() call needs the connection, but connection has been closed by this point. Any thoughts would be helpful.
Thank you,
Whitney