Cómo llamar a una function de postgres con una matriz de tipo compuesto

Estoy buscando sugerencias sobre cómo llamar a una function de postgres que tiene un argumento que es una matriz de tipo compuesto. Se hicieron preguntas similares, pero encontré una respuesta satisfactoria.

Tengo el siguiente tipo compuesto:

CREATE TYPE collect.event_record AS ( event_type integer , event_timestamp timestamp without time zone , event_data text , event_import_id integer ); 

Tengo la siguiente function:

 CREATE OR REPLACE FUNCTION collect.insert_events( fail_on_duplicates boolean, source_public_id text, event_records collect.event_record[]) RETURNS integer AS ... 

En el lado del postgres todo parece funcionar bien. Ahora solo necesito invocarlo desde java / kotlin.

Usamos esta versión del driver postgres:

 compile group: "org.postgresql", name: "postgresql", version: "9.4.1212" 

En PrepanetworkingStatement hay un método que parece ser lo que estoy buscando:

 void setArray (int parameterIndex, Array x) throws SQLException; 

El tipo de matriz es java.sql.Array que por lo que puedo decir se puede crear utilizando el object Connection:

 Array createArrayOf(String typeName, Object[] elements) throws SQLException; 

Sin embargo, aquí no estoy seguro de qué include. ¿Qué debe typeName ? Me imagino que debería crear una class que coincida con el tipo compuesto y que serialice los campos según sea necesario o que sea una matriz de java.sql.Struct .

He estado buscando ejemplos en Google, pero parecen tratar principalmente con types primitivos, lo que no ayuda en mi caso.

Una alternativa es refactorizar insert_events para aceptar varias matrices de types primitivos, una especie de vista en columna de mis objects.

Otra alternativa es enviar una matriz JSON que transformo en una matriz de collect.event_record[] dentro de la function postgres.

Sin embargo, me gustaría encontrar una manera que me permita mantener la firma de la function postgres que tengo actualmente.

Cualquier idea es muy apreciada.