Erro PSQLexception chave estrangeira

Moçada bom dia

Seguinte quando faço o evento action ele envia para o banco. Exemplo uma compra

quando passo o código chave estrangeira ele estoura um erro dizendo que não existe a chave estrangeira… ele da um PSQLexception e trava o sistema… não consigo passa um código existente ele não deixa grava

alguém sabe como resolver. obs: ele está dentro de um try catch.
e dentro de um if que vai pro try.

[code] try {
sql = “INSERT INTO produto (nm_nome,nr_valor,ds_descricao,id_cliente,nr_data)values (?,?,?,?,?)”;
ps = conexao.prepareStatement(sql);
ps.setString(1, fisica.getNome());
ps.setDouble(2, prod.getValor());
ps.setString(3, prod.getDescricao());
ps.setInt(4, prod.getCodigo());
ps.setDate(5, data);

            ps.execute();
            conexao.commit();

            JOptionPane.showMessageDialog(this, "Gravado com sucesso");
            jtfCodCliente.setText("");
            jtfNomeProduto.setText("");
            jtfValor.setText("");
            jtaDescricao.setText("");
            jftDataCompra.setValue("");


        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, prod.getCodigo());
            JOptionPane.showMessageDialog(this, "Houve um erro, não pode ser gravado! ");
            e.printStackTrace();
        }[/code]

Bom dia.

o id_cliente seria realmente o código de prod? Prod para uma variavél de uma classe produto. Mas enfim, este teu insert funciona perfeitamente se adiciona-lo diretamente no banco?
Outro detalhe, poste a Exception (stacktrace), fica mais fácil de visualizar o problema ok?

Abraços.

[quote=nel]Bom dia.

o id_cliente seria realmente o código de prod? Prod para uma variavél de uma classe produto. Mas enfim, este teu insert funciona perfeitamente se adiciona-lo diretamente no banco?
Outro detalhe, poste a Exception (stacktrace), fica mais fácil de visualizar o problema ok?

Abraços.[/quote]

Erro

org.postgresql.util.PSQLException: ERRO: inserção ou atualização em tabela "produto" viola restrição de chave estrangeira "produto_id_cliente_fkey"
  Detalhe: Chave (id_cliente)=(2) não está presente na tabela "cliente".
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:360)
        at telas.Fisica.btCadastrarActionPerformed(Fisica.java:1193)

sim, eu só testo o código pra ve se é numero mesmo na classe produto… aproveitei pra nao fazer outro…

Ele trava o sistema e eu não consigo cadastrar com um id_cliente existente.
Não sei como resolver isso.

ninguém?

De certeza que não há erro na criação das FK da tabela produto? Isso é claramente erro de dados.