Alla fine (con un piccolo aiuto da parte di altri) ho scoperto la risposta a questo. Era diviso in tre parti:
Il primo era che dovevo usare un:
OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
piuttosto che il semplice CallableStatement JDBC che stavo cercando di usare.
La seconda parte era che dovevo registrare il mio parametro "out" come segue:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
La terza parte, ed è implicita nella parte 2 sopra, era che "DATA_SUMMARY_TAB" doveva essere in MAIUSCOLO. Se lo metti in minuscolo, viene visualizzato un messaggio di errore criptico come segue:
java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab
in oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)in oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)in oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:390)at oracle.sql.StructDescriptor.(StructDescriptor.java:320)
Questo è tutto.
Inoltre, tieni presente che il nostro tipo di oggetto personalizzato non era in nessun pacchetto. Se lo è, potrebbe essere necessario modificare un po' il terzo parametro.