Ik heb eindelijk (met een beetje hulp van anderen) het antwoord hierop gevonden. Het kwam in drie delen:
De eerste was dat ik een:
. moest gebruikenOracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
in plaats van de eenvoudige JDBC CallableStatement die ik had geprobeerd te gebruiken.
Het tweede deel was dat ik mijn "out" parameter als volgt moest registreren:
stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
Het derde deel, en het is impliciet in deel 2 hierboven, was dat "DATA_SUMMARY_TAB" in HOOFDLETTERS moest staan. Als je het in kleine letters zet, krijg je als volgt een cryptische foutmelding:
java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab
op oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)op oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)op oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:390) oracle.sql.StructDescriptor.(StructDescriptor.java:320)
Dat is het.
Houd er ook rekening mee dat ons aangepaste objecttype niet in pakketten zat. Als dat zo is, moet je misschien de derde parameter een beetje hacken.