Encontrei 2 maneiras de passar o valor necessário para a função:
- É difícil criar a string do UDT se for complexo. A maneira mais fácil é fazer a engenharia reversa. Crie o UDT no plpgsql e imprima-o. Dessa forma, você obterá a string que precisa ser passada do Java. Agora, no código Java, escreva uma lógica para criar essa string.
- Outra maneira é passar o valor no formato json e na função, analisar o json e construir o UDT por conta própria.
Eu escolho a segunda abordagem, pois é fácil de manter.