如何用一个复合types的数组来调用postgres函数

我正在寻找如何调用具有参数的复合types的postgres函数的建议。 问过类似的问题,但我find了一个满意的答案。

我有以下复合types:

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

我有以下function:

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

在postgres方面一切似乎工作正常。 现在我只需要从java / kotlin中调用它。

我们使用这个版本的postgres驱动程序:

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

PreparedStatement有一个方法,似乎是我在找什么:

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

数组types是java.sql.Array ,根据我可以告诉的可以使用Connection对象创建:

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

但是,在这里我不知道该输入什么typeName是什么? 我想我应该创建一个匹配复合types的类,并根据需要序列化字段,或者它是一个java.sql.Struct数组。

我一直在谷歌搜索的例子,但他们似乎处理的原始types主要是不帮助我的情况。

另一种方法是重构insert_events来接受几个原始types的数组,排序我的对象的列视图。

另一种方法是发送一个JSON数组,将其转换为postgres函数内的collect.event_record[]数组。

但是,我想find一种方法,让我保持我目前的postgres函数签名。

任何想法,不胜感激。