Problemas com parametros de tipos compostos de banco de dados em java

Olá pessoal. Este é meu primeiro tópico no fórum.

E já venho com uma dúvida meio pesada.

É o seguinte eu estou montando uma aplicação que acessa um banco de dados, mais especificamente o PostgreSql 8. Tenho no banco de dados um tipo definido por mim chamado "t_cidade"
A definição dele é a seguinte:

CREATE TYPE t_cidade AS (
id INTEGER,
nome VARCHAR,
cep VARCHAR,
ddd VARCHAR,
uf VARCHAR
);

E uma função que faz a inclusão de uma cidade.

CREATE OR REPLACE FUNCTION f_insert_cidade (arg_cidade T_CIDADE)RETURNS INTEGER AS $padrao$
DECLARE
idt cidade.id%TYPE;
BEGIN
INSERT INTO cidade(nome, cep, ddd, uf) VALUES ((arg_cidade).nome, (arg_cidade).cep, (arg_cidade).ddd, (arg_cidade).uf) RETURNING id INTO idt;
RETURN idt;
END;
$padrao$
LANGUAGE plpgsql;

O problema é quanto tento inserir uma cidade através do java utilizando JDBC, implemento java.sql.SQLData em uma classe chamada cidade.

public class Cidade implements SQLData {
private String TYPE_NAME = “t_cidade”;
private Integer id;
private String nome;
private String cep;
private String ddd;
private String uf;

// Geters e Setters aqui e métodos implementados da interface SQLData.
}

Quando tento executar a inserção chamando a função abaixo.

[color=blue]public Integer[/color] addCidade(Cidade cidade) [color=blue]throws[/color] SQLException {
Connection cnn = getConexao();
CallableStatement cl= null;
cl = cnn.prepareCall(“call f_insert_cidade_t(?);”);
cl.setObject(0,cidade);
cl.executeQuery();
[color=blue]return[/color] null; [color=green]//Ainda não estou retornando nada apenas quero testar a inserção.[/color]
}
Por fim aparece o erro.
[color=red]Não pode inferir um tipo SQL a ser usado para uma instância de Classes.Cidade. Use setObject() com um valor de Types explícito para especificar o tipo a ser usado.[/color]

Se alguém souber onde está o erro me ajuda por favor.
Vlw… :lol: