Как я могу использовать CallableStatement (JDBC) для пользовательского типа данных (PostgreSQL)?

#java #postgresql #spring-jdbc #custom-data-type #callable-statement

Вопрос:

Я создал определенный тип данных для использования в функциях базы данных Postgres:

 CREATE TYPE custom_object AS (status status, operation expiration_operation, expiry_date TIMESTAMP);
 

Примером функции будет:

 CREATE OR REPLACE FUNCTION function_to_call(
in_object custom_object[]
)
RETURNS VOID
LANGUAGE plpgsql
AS $
BEGIN

RAISE NOTICE 'ARRAY RECEIVED';
END
$;
 

Из Postgres я могу использовать его следующим образом для массива типа «custom_object» :

 select function_to_call(array[('Active', 'Expire', now() AT TIME ZONE 'UTC'), ('Completed', 'Delete', now() AT TIME ZONE 'UTC')]::custom_object[]);
 

Затем, с Java, я бы использовал Callablestatement.

 final String[][] policy = {{"Active", "Expire",new Date().toString()},{"Completed", "Expire",new Date().toString()}};
final Connection conn = DatabaseConnectionProvider.getConnection(appConfig);
final CallableStatement stmt = conn.prepareCall("{call function_to_call(?)}");
Array arrayL;
arrayL = conn.createArrayOf("VARCHAR", labelArray.toArray());
stmt.setArray(1, policy);
 

Есть ли способ, которым я могу напрямую объявить тип этого массива как «custom_object», как ожидается функцией, или я должен передать его как обычный массив varchar, а затем выполнить некоторое приведение внутри процедуры?

Спасибо